non-greedy相关内容
我正在尝试使用正则表达式将字符串分成两部分.字符串格式如下: 要提取的文本 我一直在使用 (.*?) ,它们工作正常,但在阅读正则表达式后,我刚开始想知道为什么我需要在表达式中使用 ?.我只是在通过本网站找到它们后才这样做的,所以我不确定有什么区别. 解决方案 这是贪婪量词和非贪婪量词的区别. 考虑输入 101000000000100. 使用1.*1,
..
我注意到有 3 类不同的量词:贪婪、懒惰(即非贪婪)和占有欲. 我知道,笼统地说,贪婪量词会尝试通过首先读取整个输入字符串来获得最长匹配,然后在尝试不断失败时逐个截断字符;lazy 量词尝试通过首先读取空字符串来获得最短匹配,如果尝试一直失败,然后一个一个地添加字符;占有量词尝试与贪婪量词相同的方式,但如果第一次尝试失败,它们将停止匹配. 但是,我不确定上述内容是如何在“内部"实施的,
..
为什么我的regex模式不偷懒?它应该捕获第一个数字,而不是第二个. 这是一个有效的bash脚本. #!/bin/bashtext ='这是一些我想与word1匹配的示例文本,这个数字3.01& nbsp; GiB这里是一些额外的文本,另一个数字1.89& nbsp; GiB'regex ='(word1 | word2).*?number [[:空白:]]([0-9.] +)& nbsp
..
这是我的输入内容: xxx999xxx888xxx777xxx666yyy xxx222xxx333xxx444xxx555yyy 这是表达式: xxx.*xxx(?(.(?!xxx.*xxx))*?)xxx.*yyy 正在返回 444 . 我希望它同时返回444和777,但是我什么也收不到. 我有!排除项,因此它只匹配左侧的最里面
..
我想将通用文本处理工具 Texy!从PHP移植到Java 此工具使用preg_match_all("/.../U")进行不匹配的匹配. 所以我正在寻找一个带有UNGREEDY标志的库. 我知道我可以使用.*?语法,但是确实有很多正则表达式需要覆盖,并使用每个更新的版本进行检查. 我已经检查了 ORO-似乎被遗弃了 雅加达正则表达式-不支持 java.util.regex
..
我有以下html文件:
..
我使用正则表达式搜索替换以下字符串: \new{}\new{\textbf{test1}}\new{test2} 使用 \textbf{test1}test2 我用regex替换为\ new {(.*)}来查找,而用\ 1替换了. 但是搜索总是与我的原始字符串的整个行匹配,而reus reuslt是: }\new{\textbf{test1}}\new{test2
..
我在Python中有字符串"I like lettuce and carrots and onions". 我以为我可以通过使用像.* and这样的正则表达式来获得以下匹配["I like lettuce", "I like lettuce and carrots", "I like lettuce and carrots and onions"]. (正则表达式应匹配“和"之前的任何字符.
..
我尝试了解python中的非贪婪正则表达式,但我不明白为什么以下示例具有此结果: print(re.search('a??b','aaab').group()) ab print(re.search('a*?b','aaab').group()) aaab 我认为第一个为'b',第二个为'ab'. 谁能解释一下? 解决方案 之所以会发生这种情况,是因为您要求匹配的是之后.如果您尝
..
我对非贪婪的正则表达式有疑问.我已经看到有一些关于非贪婪正则表达式的问题,但它们并不能解决我的问题. 问题::我正在尝试匹配“大声笑"锚点的href. 注意::我知道可以使用perl HTML解析模块来完成此操作,而我的问题是不关于在perl中解析HTML.我的问题是关于正则表达式本身,而HTML只是一个例子. 测试用例::我有4个针对.*?和[^"]的测试. 2先产生预期的结果
..
我只想在第二次出现时用sed删除模式.这就是我想要的,删除模式但第二次出现. file.csv中包含什么: a,Name(null)abc.csv,c,d,Name(null)abc.csv,f a,Name(null)acb.csv,c,d,Name(null)acb.csv,f a,Name(null)cba.csv,c,d,Name(null)cba.csv,f 想要的输出:
..
说,我一行包含以下字符串: "$tom" said blah blah blash. "$dick" said "blah blah blah". "$harry" said blah blah blah. 我要提取 "$dick" said "blah blah blah" 我有以下代码: my ($term) = /(".+?" said ".+?")/g; pri
..
我正在尝试捕获两个字符串之间的匹配项. 例如,我正在寻找使用“最快"匹配(不继续向外扩展)出现在Q和XYZ之间的所有文本.该字符串: 马戏团Q你好, Q SOMETEXT XYZ 今天是XYZ好的一天XYZ 应返回: Q SOMETEXT XYZ 但是,它返回: Q你好,Q SOMETEXT XYZ 这是我正在使用的表达式: Q.*?XYZ 它向左退
..
我有一个"xml文件"文件,其中包含一些不需要的字符 blar bo some extra characters not enclosed that I want to remove bbb 我认为以下非贪婪替换将删除
..
我需要在这样的注释php文件中的某些标签内获取值 php code /* this is a comment !- titulo3 esta es la descripcion de la funcion 6
..
我有以下文字 tooooooooooooon 根据我正在阅读的这本书,当?出现在任何量词之后时,它就变得不贪婪. 我的正则表达式to*?n仍返回tooooooooooooon. 它应该返回ton不是吗? 知道为什么吗? 解决方案 正则表达式只能匹配实际存在的文本片段. 因为子字符串"ton"在字符串中不存在,所以不能是匹配的结果.匹配项只会返回原始字符串的
..
我总是这样写正则表达式 (.*?) 使用第二种方法是否有任何不利之处? regex绝对更紧凑(即使SO解析也更好). 编辑:这里有两个最佳答案,指出了两个表达式
..
我正在使用正则表达式从弧形括号(或“括号")中提取数据,就像从(a,b)中提取a,b一样,如下所示.我有一个文件,其中每一行都会像 this is the range of values (a1,b1) and [b1|a1] this is the range of values (a2,b2) and [b2|a2] this is the range of values (a3,b3)
..
我认为默认情况下,我的 Regex 会表现出我想要的贪婪行为,但是它不在以下代码中: Regex keywords = new Regex(@"in|int|into|internal|interface"); var targets = keywords.ToString().Split('|'); foreach (string t in targets) { Ma
..
我知道: 惰性量词匹配:尽可能少(最短匹配) 也知道构造函数: basic_regex( ..., flag_type f = std::regex_constants::ECMAScript ); 并且: ECMAScript支持非贪婪匹配, 和ECMAScript正则表达式"]*>.*?" 仅在第一个结束标记之前匹配..
..