Регулярное выражение: соответствует строке в начале или после некоторых специальных символов - PullRequest
1 голос
/ 13 октября 2019

Я использую класс Java Pattern, чтобы найти строку «ключевое слово», которая находится в начале строки или после символа, который находится в списке символов. Например, список символов «» и «<», затем: </p>

match:
"keyword..."
"...<keyword..."
"... keyword..."

not match:
"...akeyword..."

Я пробовал все это:

"[^ <]keyword"
"[ <^]keyword"
"[\\^ <]keyword"  note:for a Java/C# string backslash need to be escaped

Этот вопрос похож Совпадениетолько в начале строки или после пробела , но только с базовыми навыками Regex я не могу принять это к этой проблеме. Я пробовал:

"(?<!\\S<)keyword"
"(?<!([\\S<]))keyword"

И это, кажется, очень простая проблема, может быть очень простой и понятный способ.

Ответы [ 3 ]

3 голосов
/ 13 октября 2019

Это должно работать (^|[< ])keyword

(...|...) имеет ^ и [< ], указывая, что это должно быть начало строки после char(<) или char( )

2 голосов
/ 13 октября 2019

Вы можете использовать чередование | в группе без захвата (?:^|[ <]), чтобы утверждать либо начало строки ^, либо совпадение с пробелом или < в классе символов и использовать группу захвата для ключевого слова.

(?:^|[ <])(keyword)\b

Regex demo

Или вы можете использовать положительный взгляд назад (?<=...) и использовать только ключевое слово

(?<=^|[< ])keyword\b

Regexдемо

0 голосов
/ 13 октября 2019
(^keyword |[< ^]keyword)

Напишите в квадратных скобках нужный вам символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...