Точное соответствие регулярному выражению для не алфавитных символов c - PullRequest
1 голос
/ 18 апреля 2020

Я пытаюсь найти точное совпадение в строках, отличных от alphanumeri c, например, ##, используя регулярное выражение в JavaScript

Соответствие должно быть только для целого слова, например, asdf ## adsf или ## но не a##sdf или ####

Я пытался ^##$, \b##\b, \w##\w и искал ответ, но я в тупике

Ответы [ 2 ]

2 голосов
/ 18 апреля 2020

Вам нужны пользовательские границы слов, которые включают шаблоны \w и #.

Использование

(?<![#\w])##(?![\w#])

См. Демонстрационную версию regex

Подробности

  • (?<![#\w]) - (отрицательный вид сзади) нет # и слово char разрешено непосредственно слева от текущего местоположения
  • ## - последовательность символов ##
  • (?![\w#]) - (отрицательный взгляд) нет # и слово char разрешено сразу справа от текущего местоположения.
0 голосов
/ 18 апреля 2020

Чтобы получить совпадение указанного слова "##" alphanumeri c, вы можете выбрать пакет regex с функцией findall () , который приводит все найденные вхождения в список , Вы можете использовать метасимвол '\' , чтобы найти последовательность "##" в предложении, для которого вы ищете. Ниже приведен пример кода.

Код

import re 

text = "This ## sentence contains two ##"

result = re.findall("\##", text)
result_count = len(result)

print("Resulted Search: ",result)
print("Result Count: ",result_count)

Вывод:

Resulted Search:  ['##', '##']
Result Count:  2

Если вы ища совпадение как «##», за которым следует пробел, вы можете выбрать выражение «## \ s», т.е.

re.findall("\##\s", text)

Если вы ищете совпадение как «##», за которым следует пробел или совпадение может быть даже в конце строки, тогда вы можете выбрать выражение "## \ s | ## $", то есть

re.findall("\##\s|\##$", text)

или

re.findall("\##\s, text+" )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...