Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式锚\<;与\b相对的词边界_Python_Regex_Re - Fatal编程技术网

Python 正则表达式锚\<;与\b相对的词边界

Python 正则表达式锚\<;与\b相对的词边界,python,regex,re,Python,Regex,Re,我在学regex。其中一个问题要求我找到所有以元音开头的单词。我使用Python的re模块来计算正则表达式 这是我制作的正则表达式: \<[aeiouAEIOU].*?\> \ 上述正则表达式不适用于\锚点,但适用于\b锚点。为什么?“不工作”是不正确的;一个在某些正则方言中工作,另一个在其他方言中工作 大多数“现代”正则表达式方言(Python、Perl、Ruby等)在两侧都使用\b作为单词边界 更传统的regex方言,如原始的egrep,使用\ (严格地说,Al-Aho最初的

我在学regex。其中一个问题要求我找到所有以元音开头的单词。我使用Python的
re
模块来计算正则表达式

这是我制作的正则表达式:

\<[aeiouAEIOU].*?\>
\
上述正则表达式不适用于
\
锚点,但适用于
\b
锚点。为什么?

“不工作”是不正确的;一个在某些正则方言中工作,另一个在其他方言中工作

大多数“现代”正则表达式方言(Python、Perl、Ruby等)在两侧都使用
\b
作为单词边界

更传统的regex方言,如原始的
egrep
,使用
\


(严格地说,Al-Aho最初的
egrep
没有单词边界;这项功能是后来添加的。也许可以查看一分钟的regex历史摘要。)

Python
re
不支持“前导/起始单词边界”
\:]]

请注意,大多数NFA(通常称为“现代”正则表达式引擎)都不支持前导和尾随单词边界。正如您已经注意到的,通常的方法是使用
\b
,因为这样更方便

然而,这种便利是有代价的:
\b
是一种依赖于上下文的模式。这个问题已经被广泛地讨论过了,下面是我的答案,涵盖了
\b
的一些方面,请参阅

因此,如果您计划使用
\
,您需要像这样手动实现它们:

  • \licode\>
    =单词边界处的一个位置,左边的字符是单词char,即
    \b(?我认为不同的引擎/风格支持同一事物的不同语法,但我不确定。那么,您试图匹配的文本是什么,您能将其包括在您的问题中吗?@VishalSingh“GNU"在这个上下文中没有很好的定义。一些GNU实用程序使用
    \
    ,其他的使用
    \b
    ,其他的则完全不支持正则表达式的单词边界。只是在sublime文本搜索中尝试了正则表达式,它就起了作用。我现在很想知道为什么python代码会运行。它应该会抛出一个警告。总之,我学到了一些东西ng new:regex有不同的实现