python - 一个简单的正则匹配问题
阿神
阿神 2017-04-18 10:20:43
0
3
781
In [33]: re.match('ab\\*c','ab*cd')
Out[33]: <_sre.SRE_Match object; span=(0, 4), match='ab*c'>

如上,没想明白为什么能匹配到,我的匹配模式中不是使用'\'将''转义成了字符串了吗,为什么最后还能匹配到结果??谢谢!!

阿神
阿神

闭关修行中......

répondre à tous(3)
左手右手慢动作

Les expressions régulières utilisent le caractère barre oblique inverse ('') pour indiquer des formes spéciales ou pour permettre l'utilisation de caractères spéciaux sans invoquer leur signification particulière. Cela entre en conflit avec l'utilisation par Python du même caractère dans le même but dans les chaînes littérales. ; par exemple, pour correspondre à une barre oblique inverse littérale, il faudra peut-être écrire '\' comme chaîne de modèle, car l'expression régulière doit être , et chaque barre oblique inverse doit être exprimée comme à l'intérieur d'une chaîne Python littérale normale.

En fait, je ne comprends pas à quel modèle vous souhaitez correspondre, mais votre problème devrait être résolu par ce qui précède.
Il est recommandé d'utiliser de la ficelle brute.

Peter_Zhu
'ab\*c'

Cette règle est bien compile après

'ab*c' // 这里*表示匹配`*`这个字符

Alors bien sûr, il peut correspondre à ab*cdab*c dans la chaîne cible

黄舟

Ajoutez un r si vous ne voulez pas que cela corresponde.

re.match(r'ab\*c','ab*cd')
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal