Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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 - Fatal编程技术网

Python 两个单词边界(\b)以隔离单个单词

Python 两个单词边界(\b)以隔离单个单词,python,regex,Python,Regex,我试图匹配紧跟在数字后面的单词——在下面的句子中,它是“米”这个词 这座塔有100米高 以下是我尝试过的但不起作用的模式: \d++\s*(\b.++\b) 但这一次: \d+\s*(\w+) 第一个不正确的模式与此匹配: 这座塔有100米高 我不想让“高”这个词与之匹配。我预期会出现以下行为: \d+匹配一个或多个数字出现的次数 \s*匹配任何空格或不匹配空格 (启动新的捕获组 \b查找单词/非单词边界 +匹配除新行以外的一项或多项内容 \b查找下一个单词/非单词边界 )停止捕获组 问题是我对

我试图匹配紧跟在数字后面的单词——在下面的句子中,它是“米”这个词

这座塔有100米高

以下是我尝试过的但不起作用的模式:

\d++\s*(\b.++\b)
但这一次:

\d+\s*(\w+)
第一个不正确的模式与此匹配:

这座塔有100米高

我不想让“高”这个词与之匹配。我预期会出现以下行为:

\d+
匹配一个或多个数字出现的次数

\s*
匹配任何空格或不匹配空格

启动新的捕获组

\b
查找单词/非单词边界

+
匹配除新行以外的一项或多项内容

\b
查找下一个单词/非单词边界

停止捕获组

问题是我对regex一窍不通,我是一个不折不扣的不折不扣的不折不扣的人。我通过自己解决问题来练习——这就是其中之一。为什么比赛没有在第二次休息时停止


这是蟒蛇味的

它没有停止,因为默认情况下,
+
是非贪婪匹配的
+?

一个简明的解释-
*
+
是贪婪的量词/运算符,这意味着它们将尽可能匹配,并且仍然允许正则表达式的其余部分匹配

对于非贪婪匹配,您需要使用
跟随这些运算符,按照上面的顺序,它将是(
*?
)“零或多”或(
+?
)“一或多”-但最好是“尽可能少”


此外,单词边界
\b
还匹配一个位置,其中一侧是单词字符(字母、数字或下划线,或Python 3中的unicode字母、数字或下划线),另一侧不是单词字符。如果你不清楚边界之间是什么,我不会在
周围使用
\b

它匹配两个词,因为
匹配(几乎)所有字符,也匹配空格字符,因为
+
贪婪,所以它会尽可能匹配。如果你使用
\w
而不是
的话,它会起作用的(因为
\w
只匹配单词字符-a-zA-Z_0-9)。

你可以使用:可能的副本涵盖了你可能问到的任何正则表达式问题。嗯,你不能在数字之间,或数字与字母或下划线之间使用单词边界
\b
。原因是它们都被认为是词语。在正则表达式中,根据引擎的不同,可选的
\s*
空格实际上不是可选的。这是唯一的匹配方式。除此之外,你想要匹配的单词是由什么组成的?@Mathletics这是一篇不错的帖子,但是谁能用它来解决代码故障呢?它非常冗长,就像任何其他在线正则表达式教程一样-包含了来自a-z的信息(并非双关语)。@sln“word”如“word character”(\w)或其集合。我只是说明有关贪婪和非贪婪量词的章节。我现在不知道那些是什么。