问题标签 [non-greedy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 使一个或零个正则表达式运算符变得贪婪
我有两个句子作为输入。比如说:
现在我想匹配跨度标签内的每个文本部分,如果有的话,颜色。
如果我使用以下正则表达式:
只有与颜色匹配的线。所以我想让我们使用 ?-operator (一或零)。
现在两行/句子都将匹配。可惜颜色已经不匹配了。
问题是为什么?通过使用 ”。*?” 在颜色部分之前,我认为我已经使正则表达式不贪婪,以便颜色部分匹配,如果它存在的话。但正如所说,它不...
regex - Tcl/Expect 正则表达式 - 想要变得懒惰(而不是贪婪)
网站新手,请多多包涵。我正在处理 Tcl/Expect 脚本并尝试匹配以下路由器输出中第 4 行的一部分(显示了两个可能的输出)。它通常有一个 IP 地址,但也可能有第二个示例中的字符串:
另一个可能的输出:
我的期望声明,使用正则表达式,如下:
(3 个反斜杠是为了让它们通过 Tcl 解析,并且将 * 传递给正则表达式解释器,以匹配文字星号。)
我的问题是——毫不奇怪——这是一场“贪婪”的比赛,我需要它不要贪婪。请参阅调试输出,其中清楚地说明了这一点:
我希望比赛在第一个 \r\n 停止。
所以,对于非贪婪匹配,我会认为我需要添加一个“?” 如下:
问题是,这似乎不起作用。我从调试输出中得到以下信息:
我已经盯着这个太久了,所以我想我会请求一些帮助。关于我需要做些什么来获得我需要的懒惰匹配的任何想法?请注意,我坚持在此 HP-UX 服务器上仅使用基本正则表达式...扩展正则表达式不可用。
谢谢,詹姆斯
regex - vim中的非贪婪多行搜索
我正在尝试搜索 ruby 文件并找到所有方法(在稍后自动替换它们之前)。在 vim 中,我使用以下正则表达式:
但是,即使我使用“{-}”,它也会选择整个文件的内容。
c - Posix 正则表达式非贪婪
有没有一种方法可以在 C 中使用非贪婪的正则表达式,就像在 Perl 中使用的那样?我尝试了几件事,但实际上没有用。
我目前正在使用这个匹配 IP 地址和相应 HTTP 请求的正则表达式,但它很贪婪,尽管我使用 *?:
([0-9]{1,3}(\\.[0-9]{1,3}){3})(.*?)HTTP/1.1
在这个例子中,它总是匹配整个字符串:
$ ./regtest
127.0.0.1 GET /test.php HTTP/1.1" 404 525 "-" "Mozilla/5.0 (Windows NT HTTP/1.1
python - 用于从嵌套组中选择/提取的 Python 正则表达式
我正在尝试使用 CHAR(int) 和 NCHAR(int) 处理字符串,以将这些实例与它们的 ASCII 对应部分进行转换。一个例子是这样的:
请注意,我不想对 VARCHAR(int) 做任何事情,只对 CHAR(int) 和 NCHAR(int) 部分做任何事情。以上应翻译为:
|(SELECT TOP 1 CAST(name AS VARCHAR(8000)) FROM (SELECT TOP 1 colid, name FROM [Projects]..[syscolumns] WHERE xtype=U AND id = OBJECT_ID(EN_Empl)
请注意,应删除 CHAR(int) 或 NCHAR(int) 两侧的任何“+”。我尝试了以下方法:
其中str
= 必须处理的原始字符串。
不知何故,VARCHAR(8000) 正在被拾取。如果我调整正则表达式,xtype 之后的“=”就会消失,而不仅仅是 CHAR(int) 或 NCHAR(int) 实例两侧的空格和“+”。
希望有人能把我拉出来。
其他示例字符串:
细绳"char(124)+(Select Top 1 cast(name as varchar(8000)) from (Select Top 1 colid,name From [Projects]..[syscolumns]
Where id = OBJECT_ID(NCHAR(69)+NCHAR(78)+NCHAR(95)+NCHAR(69)+NCHAR(109)+NCHAR(112)+NCHAR(108)))"
正则表达式:r'(\bn?char\((\d+)\)(?:\s*\+\s*)?)'
结果:"|(Select Top 1 cast(name as varchar(8000)) from (Select Top 1 colid,name From [Projects]..[syscolumns] Where id = OBJECT_ID(ENCHAR(78)+NCHAR(95)+NCHAR(69)+NCHAR(109)+NCHAR(112)+NCHAR(108)))"
javascript - 为什么是正则表达式.*?只匹配javascript中的空字符串?
我认为.*?
是非贪婪的,它应该返回a
javascript - Javascript replace() 正则表达式太贪心
我正在尝试清理 HTML 输入字段。我想保留一些标签,但不是全部,所以我不能只.text()
在读取元素值时使用。我在 Safari 中的 JavaScript 中使用正则表达式时遇到了一些问题。这是代码片段(我从另一个 SO 线程答案中复制了这段正则表达式):
这是失败的示例输入:
这个想法是href将被拉出并作为纯文本输出到将被链接的文本旁边。所以上面的输出最终应该是这样的:
但是,正则表达式在第一场比赛中一直抓取到第二个</a>
标签,所以我丢失了第一行输出。(实际上,只要锚元素相邻,它就会抓取到列表的最下方。)输入是一个长字符串,而不是用 CR/LF 或任何东西分割成行。
我尝试过使用这样的非贪婪标志(注意第二个问号):
但这似乎并没有改变任何东西(至少在我尝试的少数测试器/解析器中没有,其中之一在这里: http ://refiddle.com )。也尝试过该/U
标志,但没有帮助(或者这些解析器没有识别它)。
有什么建议么?
python - Python 非贪婪正则表达式并不完全符合我的预期
字符串:XXaaaXXbbbXXcccXXdddOO
我想匹配以 'XX' 开头并以 'OO' 结尾的最小字符串。
所以我写了非贪婪的注册:r'XX.*?OO'
我以为它会返回['XXdddOO']但它太“贪婪”了。
然后我知道我一定是弄错了,因为上面的限定符将首先匹配“XX”,然后显示它是“非贪婪的”。
但我仍然想弄清楚我怎样才能直接得到我的结果['XXdddOO']。任何回复表示赞赏。
到现在为止,重点其实不是非贪心,或者说,是我眼中的非贪心:左限定符(XX)和右限定符( OO). 当然事实是字符串是从左到右处理的。
regex - 如何使我的 Regex 的一部分不贪婪?
最终解决方案
原始问题
正则表达式
图案
此正则表达式返回“66 23 Britton Drive”。我想返回“23 Britton Drive”。我尝试了以下正则表达式的变体:
更多不起作用的模式
有效的模式