Regex: проверить, является ли инкапсулированная строка числовой - PullRequest
1 голос
/ 21 октября 2019

Я работаю над анализатором #hashtag в регулярных выражениях. Я пытаюсь сделать один идентичный парсеру хештега в твиттере, но я не могу найти один идентичный в Интернете, поэтому я создаю свой собственный.

Вот пример желаемых выходов для данноговходы.

#inktober -> Valid hashtag.
#inktober2019 -> Valid hashtag.
#2019 -> Not a valid hashtag.

Я застрял при обнаружении, когда хэштег содержит только числа, которые не должны быть определены как хэштеги.

Вот ссылка, где я работаю над этимрегулярное выражение:

https://www.phpliveregex.com/p/tTB#tab-preg-match-all

Я очень неопытен в регулярных выражениях, поэтому извините, если это глупый вопрос.

Мой язык - PHP.

Спасибо! пп

1 Ответ

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

Я предполагаю, что, возможно,

(?i)#[a-z][a-z0-9]*(?=\s|$)

просто сработает ОК.

Тест

$re = '/(?i)#[a-z][a-z0-9]*(?=\s|$)/m';
$str = '#inktober #inktober2019 #i #i1 #1 #2019
# inktober #@inktober2019 #@i #i1@ #1 #2019';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

var_dump($matches);

Если вы хотите упростить / изменить/ изучить выражение, это было объяснено на верхней правой панели regex101.com . Если хотите, вы также можете посмотреть в этой ссылке , как она будет сопоставляться с некоторыми примерами входных данных.


RegEx Circuit

jex.im визуализирует регулярные выражения:


enter image description here

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