小编典典

.* 和有什么不一样?和 .* 正则表达式?

all

我正在尝试使用正则表达式将字符串分成两部分。该字符串的格式如下:

text to extract<number>

我一直在使用(.*?)<并且<(.*?)>工作正常,但是在稍微阅读了正则表达式之后,我才开始想知道为什么我需要?在表达式中。我只是在通过这个网站找到它们之后才这样做,所以我不确定有什么区别。


阅读 121

收藏
2022-07-14

共1个答案

小编典典

这是贪婪量词和非贪婪量词之间的区别。

考虑输入101000000000100

使用1.*1,*是贪心的 - 它会一直匹配到最后,然后回溯直到它可以匹配1,留下1010000000001.
.*?是非贪婪的。*将不匹配任何内容,但随后将尝试匹配额外字符,直到匹配1,最终匹配101.

所有量词都有一个非贪婪模式:.*?, .+?, .{2,6}?, 和 even .??

在您的情况下,类似的模式可能是<([^>]*)>- 匹配除大于号以外的任何字符(严格来说,它匹配除>中间<和之外的零个或多个字符>)。

请参阅 量词备忘单

2022-07-14