Проблема с утверждением обратного выражения регулярного выражения

это мое текущее регулярное выражение:

(?<=[\$T|\s|\p{P}|\$%\$%])sampleString

Я хочу сопоставить все sampleString в моем RichTextBox

и некоторый пример строки примера в моем richtextBox выглядит примерно так:

$TsampleString
$%$%sampleString

Проблема в том, что мое регулярное выражение соответствует этому: TsampleString, $sampleString, %sampleString.

Как я могу исправить это утверждение регулярного выражения? Благодарность


person neo    schedule 23.08.2012    source источник
comment
Каков ваш ожидаемый результат?   -  person xdazz    schedule 23.08.2012
comment
Я хочу сопоставить только sampleString.   -  person neo    schedule 23.08.2012
comment
Ты уверен? Ваше регулярное выражение отлично работает с того места, где я сижу   -  person Jay    schedule 23.08.2012
comment
попробуйте ввести TsampleString, и регулярное выражение будет соответствовать sampleString, чего я не хочу. единственные символы, которые должны быть слева от sampleString, — это $T и $%$%, а не T, $ и %.   -  person neo    schedule 23.08.2012


Ответы (1)


Вы неправильно строите регулярное выражение. У вас есть класс символов (обозначенный квадратными скобками), в котором вы просто хотите перечислить альтернативы. Пытаться:

(?<=\$T|\s|\p{P}|\$%\$%)sampleString

Редактировать: Подождите, я только что проверил. Почему вы используете \p{P}? Это пунктуация. % будет соответствовать, среди прочего.

Редактировать II: «с левой стороны от sampleString должны быть только символы $T и $%$%»

Хорошо, так проще:

(?<=\$T|\$%\$%)sampleString
person JayC    schedule 23.08.2012