2017-01-16 3 views
0

Я хочу проанализировать текст и сохранить только слова с альфа-символами или с символом ' (39 в ASCII). Для Exemple:Регулярное выражение разделить слово, используя число как токен

I know that Dave's car is 'broken'. 

должен быть проанализирован в

I/know/that/Dave's/car/is/broken 

(где / просто чтобы показать, что это еще одно слово).

До сих пор у меня есть:

regex e ("\\b[A-Za-z']+\\b"); 

, но это не расщепляется abc2efg в abc/efg который был бы конечный результат я хочу получить.

Спасибо за ваши ответы.

+2

что делает '\ b' значит? – Nim

+0

Он соответствует границе слова. Я не знаю, является ли эта реализация лучшей, но на данный момент она может анализировать пример, который я дал правильно, но не два слова, разделенные числом. – Daxid

+0

Попробуйте 'regex e (" \\ b [A-Za-z] + (?: '[A-Za-z] +)? \\ b ");' или 'regex e (" (?:^| [^ A-Za-z]) ([A-Za-z] + (?: '[A-Za-z] +)?) (?! [A-Za-z]) ");' и grab Group1 contents –

ответ

0

\\b только совпадения на границах слов.

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

regex e ("([A-Za-z]+)|([A-Za-z]+[A-Za-z']*[A-Za-z]+)"); 
+0

С ответом на него берутся «которые находятся в голове/хвосте слов». Например, если «Hello» находится в тексте, это займет «Hello». – Daxid

0

U может сделать это

# 1

(\d+) 

Затем замените ''

Результат

азбука, Защиту

# 2

([a-zA-Z]+) 

Результат:

abc 
def 
Смежные вопросы