Regex, чтобы проверить, существует ли точная строка включая #

Новый вопрос, Как предложил Asaph в предыдущем вопросе: Regex, чтобы проверить, существует ли точная строка

Я ищу способ проверить, существует ли точное строковое совпадение в другом строковом использовании Regex или какой-либо лучший предложенный метод. Я понимаю, что Вы говорите regex соответствовать пространству или любому другому несловесному символу вначале или концу строки. Однако я не знаю точно, как настроить его.

Строка поиска: #t

Должен соответствовать:
Строка 1: Hello World, Nice to see you! #t
Строка 2: #T Hello World, Nice to see you!
Строка 3: Hello World, #t Nice to see you!

Не должен Соответствовать:
Строка 1: Hello World, Nice to see you!
Строка 2: Hello World, Nice to see you! #ta
Строка 3: #tHello World, Nice to see you!

Редактирование 2: Добавленный больше строковых образцов

Отредактируйте 1 для Serg555 и SilentGhost:
Символы позволили в строке поиска:
#[_a-zA-Z0-9]
# является дополнительным.

Требования: Строка поиска может быть в любой позиции символа в Предмете. Там может или может не быть пробельный символ прежде или после него. Я не хочу, чтобы это соответствовало, если это - часть другой строки; такой как часть слова.

Ради этого вопроса: Я думаю, что сделал бы это использование этого шаблона: /\b\#t\b/gi
Однако это не возвращает результаты, как я ожидал бы.

Я могу найти точные совпадения для нормальных строк (строки, где # не присутствует), использование:

/\b{$search_string}\b/gi

Дополнительная информация: это будет использоваться в PHP 5

5
задан Community 23 May 2017 в 12:07
поделиться

2 ответа

Все, что вам нужно, это:

/(?:^|\s)#t\b/i           #t is in the beginning or preceded by space.

\ b соответствует границе слова, которая является границей между символами слова и символами, не являющимися словами. # не является словесным символом, поэтому ваше регулярное выражение соответствует только таким строкам: abc # t или ab_ # t .

Кроме того, обычно # не является специальным символом в регулярном выражении, вам не нужно его экранировать.

ETA : Ваши требования довольно неоднозначны: До или после него может быть или не быть пробела. Я не хочу, чтобы он совпадал, если он является частью другой строки; например, часть слова.

  1. нет символа пробела до или после? так что будет символ, отличный от пробела?
  2. но как он будет отделен от других строк? какие символы разрешены?

Я думаю, вам нужно дать исчерпывающий образец возможных входных строк. Потому что, поскольку это мое регулярное выражение, работает нормально.

5
ответ дан 14 December 2019 в 19:05
поделиться

Попробуйте / (?! \ B) #t \ b / si

0
ответ дан 14 December 2019 в 19:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: