【发布时间】:2016-04-17 22:05:57
【问题描述】:
我正在使用 Python 2.7.10 操作系统 Ubuntu 15.04
我的目标:查找给定字符串中正则表达式的所有匹配项。
我的问题:我设计的正则表达式不匹配预期的词,但匹配了它不打算匹配的词。
这个案例的特别之处:我用一些在线正则表达式测试应用程序(https://regex101.com/#python AND http://pythex.org/)测试了我的正则表达式,我的正则表达式只匹配那些我需要的词与我不需要的词不匹配。但是,在命令行中执行它时完全错误。
请帮我弄清楚以下几点: - 为什么它在在线测试时运行良好而在 命令行? - 如何改进我的正则表达式以使其按预期工作?
代码如下:
yuliaPattern = u'[Юю]л((ь(к\S*|ч\S*))|([яеию]\S*))+'
yuliaCompiled = re.compile(yuliaPattern, re.I)]
match = re_pattern.findall(text)
结果匹配是:
(u'\u044f\xbb,', u'', u'', u'\u044f\xbb,')
或者换句话说:
я», я»,
即使不懂俄语,也很清楚 Юля 与 "я"、"я 和空格非常不同。
预期结果:实际上这段文字中根本不应该有任何匹配项。
正则表达式为:
u'[Юю]л((ь(к\S*|ч\S*))|([яеию]\S*))+'
它旨在匹配源自:Юля、Юлия、Юльчин、Юлька 不区分大小写的单词
文字是:
Новости 15-00<br><br>1. Олланд пригрозил войной случае неуспеха переговоров Украине<br><br>В субботу французский лидер выступил мюнхенской конференции безопасности. Комментируя ситуацию Украине дипломатические усилия Парижа Берлина разрешению конфликта Донбассе, Олланд заявил, переговоры являются «одним последних шансов» достижения регионе. случае, долговременного решения кризиса будет, случится «известный сценарий – называется войной», заявил политик.<br><br>Читать далее: <br><br>2. Силовики нанесли 14 артиллерийских ракетных ударов территории ЛНР<br><br>Обстрелам подверглись населенные пункты Первомайск, Санжаровка, Красный Лиман, Обозное, Стаханов, Кировск, Райовка, район базы отдыха «Десюля», автомобильный мост трассе «Луганск — Станица Луганская» районе памятника князю Игорю. Зафиксировано применение крупнокалиберной ствольной артиллерии реактивных систем залпового огня «Град» «Ураган».<br><br>Читать далее: br><br>3. Басурин: переговоров интенсивность обстрелов Донецка увеличилась<br><br>Басурин отметил, встречи Порошенко канцлером Германии Ангелой Меркель президентом Франции Франсуа Олландом интенсивность обстрелов Донецка увеличилась, результате мирные жители провели одну беспокойную ночь.<br>Он обратил внимание то, начинаются переговоры представителями официального Киева, сразу резко растет количество жертв. Поэтому Басурин уверен, бойцы ВСУ умышленно нагнетают обстановку из-за нежелания договариваться перемирии.<br><br>Читать далее:
【问题讨论】:
-
你试过使用原始字符串吗?像
ur'[Юю]л((ь(к\S*|ч\S*))|([яеию]\S*))+'这样的模式。 -
您确定您的
text变量包含您提供的文本吗?请在此处发布完整的相关代码。 -
不知道 Python 有命令行界面。命令行代码是什么样的?
-
@zondo,谢谢,我试过了,没有帮助。伙计们,谢谢你们的cmets。 sIn 在下面给了我一个很好的答案。现在我可以看到问题所在了。
-
@sln
python -c "print('hello world')"可能会被认为是命令行 python。
标签: python regex unicode cyrillic