|
|
1
8
你描述的行为不是
贪婪的
,它是
占有欲强的
正常的、贪婪的量词尽可能多地匹配,但必要时会退缩,以允许整个正则表达式匹配(我喜欢把它们看作
贪婪但宽容
一些正则表达式风格(包括Java和PHP)支持 possessive quantifiers ,即使这会导致整场比赛失败,也永远不会退缩。 .NET没有这些,但它有下一个最好的东西: atomic groups 无论你在原子组中放入什么,它都像一个单独的正则表达式一样——它要么在应用的位置匹配,要么不匹配,但它永远不会回去,也不会试图比最初匹配得更多或更少,只是因为正则表达式的其余部分失败了(也就是说,正则表达式引擎永远不会回溯 原子团)。以下是您将如何使用它来解决您的问题:
如果字符串以百分号开头
请注意,原子群(或所有格量词)不是解决这个问题所必需的,正如@Dav所证明的那样。但它们是非常强大的工具,可以很容易地区分 不可能 和 可能的 ,或 太慢了 和 尽可能地光滑 . |
|
|
2
9
如果可能的话,正则表达式将始终尝试匹配整个模式——“贪婪”并不意味着“如果存在,将始终抓取字符”,而是意味着“只要存在,将总是抓取字符” 抓住它就可以比赛了 ". 相反,你可能想要的是这样的东西:
它将匹配一个%后跟3个字符,或者一个非%、非空格后跟2个字符。 |
|
|
3
1
我总是喜欢看RE问题,看看人们花了多少时间来“节省时间”
虽然在现实生活中我会更明确,但我只是这样写的,因为出于某种原因,有些人认为代码简洁是一种优势(我称之为反优势,但目前这还不是一种流行的观点) |
|
|
4
0
尝试在Dav的原始正则表达式的基础上稍作修改的正则表达式:
启用正则表达式选项“^和$换行符匹配”。 |
|
|
wonghenry · 另一个选择中的正则表达式选择 9 年前 |
|
|
Seamus · 正则表达式以查找字符串中最后一次出现的模式 9 年前 |
|
|
Dzmitry · regex贪婪匹配以字符或字符串结尾[重复] 10 年前 |
|
|
Chlodwig Radulf · Regex…尽可能少 10 年前 |
|
|
GM. · 如果存在代码,则使用regex获取文本 10 年前 |
|
|
Savan Patel · 查找reg ex中的特定单词和特殊字符 10 年前 |
|
|
linvi · Regex Or和贪婪 11 年前 |
|
|
user2745246 · Regex以避免分隔字符串中的数据重复? 11 年前 |