Python 正则表达式锚\<;与\b相对的词边界
我在学regex。其中一个问题要求我找到所有以元音开头的单词。我使用Python的Python 正则表达式锚\<;与\b相对的词边界,python,regex,re,Python,Regex,Re,我在学regex。其中一个问题要求我找到所有以元音开头的单词。我使用Python的re模块来计算正则表达式 这是我制作的正则表达式: \<[aeiouAEIOU].*?\> \ 上述正则表达式不适用于\锚点,但适用于\b锚点。为什么?“不工作”是不正确的;一个在某些正则方言中工作,另一个在其他方言中工作 大多数“现代”正则表达式方言(Python、Perl、Ruby等)在两侧都使用\b作为单词边界 更传统的regex方言,如原始的egrep,使用\ (严格地说,Al-Aho最初的
re
模块来计算正则表达式
这是我制作的正则表达式:
\<[aeiouAEIOU].*?\>
\
上述正则表达式不适用于\
锚点,但适用于\b
锚点。为什么?“不工作”是不正确的;一个在某些正则方言中工作,另一个在其他方言中工作
大多数“现代”正则表达式方言(Python、Perl、Ruby等)在两侧都使用\b
作为单词边界
更传统的regex方言,如原始的egrep
,使用\
(严格地说,Al-Aho最初的
egrep
没有单词边界;这项功能是后来添加的。也许可以查看一分钟的regex历史摘要。)Pythonre
不支持“前导/起始单词边界”\
:]]
)
请注意,大多数NFA(通常称为“现代”正则表达式引擎)都不支持前导和尾随单词边界。正如您已经注意到的,通常的方法是使用\b
,因为这样更方便
然而,这种便利是有代价的:\b
是一种依赖于上下文的模式。这个问题已经被广泛地讨论过了,下面是我的答案,涵盖了\b
的一些方面,请参阅
因此,如果您计划使用\
,您需要像这样手动实现它们:
=单词边界处的一个位置,左边的字符是单词char,即\
licode\>
,其他的使用\b(?我认为不同的引擎/风格支持同一事物的不同语法,但我不确定。那么,您试图匹配的文本是什么,您能将其包括在您的问题中吗?@VishalSingh“GNU"在这个上下文中没有很好的定义。一些GNU实用程序使用
\
,其他的则完全不支持正则表达式的单词边界。只是在sublime文本搜索中尝试了正则表达式,它就起了作用。我现在很想知道为什么python代码会运行。它应该会抛出一个警告。总之,我学到了一些东西ng new:regex有不同的实现\b