正则表达式是动态构建的,但我将它输出到firebug:
(.{1,38})(+|$\n?)
Run Code Online (Sandbox Code Playgroud)
错误是
invalid quantifier +|$\n?)
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始.
实际代码是:
var re = top.RegExp;
var regex = new re("(.{1," + len + "})(+|$\\n?)", "gm");
Run Code Online (Sandbox Code Playgroud)
更新: 根据Bennor McCarthy的说明,我将代码更改为:
var regex = new re("(.{1," + len + "})(\+|\$\\n?)", "gm");
Run Code Online (Sandbox Code Playgroud)
Firebug仍然告诉我这个:
invalid quantifier +|$\n?)
[Break on this error] var regex = new re("(.{1," + len + "})(\+|\$\\n?)", "gm");
Run Code Online (Sandbox Code Playgroud)
另一个更新 看起来像我必须加倍削减它,这解决了问题!
var regex = new re("(.{1," + len + "})(\\+|\\$\\n?)", "gm");
Run Code Online (Sandbox Code Playgroud) 我意外地回溯+了 Raku 正则表达式的量词。
在这个正则表达式中:
'abc' ~~ m/(\w+) {say $0} <?{ $0.substr(*-1) eq 'b' }>/;
say $0;
Run Code Online (Sandbox Code Playgroud)
我得到了预期的结果:
?abc? # inner say
?ab? # inner say
?ab? # final say
Run Code Online (Sandbox Code Playgroud)
也就是说,(贪婪)+量词获取所有字母,然后条件失败。之后它通过释放最后一个得到的字母开始回溯,直到条件评估为真。
但是,当我将量词放在捕获组之外时,回溯似乎不会以相同的方式工作:
'abc' ~~ m/[(\w)]+ {say $0} <?{ $0.tail eq 'b' }>/;
say $0;
Run Code Online (Sandbox Code Playgroud)
结果:
[?a? ?b? ?c?] # inner say
[?a? ?b? ?c?] # why this extra inner say? Shouldn't this backtrack to [?a? ?b?]?
[?a? ?b? ?c?] # why this extra inner say? Shouldn't this …Run Code Online (Sandbox Code Playgroud) 如何在prolog中实现以下规则.
我写的"没有蜘蛛是哺乳动物"的句子是存在主义和普遍的:
¬?x(mammals(X) ? spider(X) ) //It is not the case that mammals are spider
?X(mammals(X) ? ¬spider(X)) //All mammals are non-spider.
Run Code Online (Sandbox Code Playgroud) 我试图匹配所有出现的字符串Article后跟一个数字(单个或多个数字),后面没有一个左括号.在Sublime Text中,我使用以下正则表达式:
Article\s[0-9]++(?!\()
Run Code Online (Sandbox Code Playgroud)
搜索以下字符串:
Article 29
Article 30(1)
Run Code Online (Sandbox Code Playgroud)
哪个不匹配Article 30(1)(正如我预期的那样)但是Article 29和Article 1.
尝试在Python(3)中使用时也一样
import re
article_list = re.findall(r'Article\s[0-9]++(?!\()', "Article 30(1)")
Run Code Online (Sandbox Code Playgroud)
我得到以下错误,因为我正在使用Python正则表达式不支持的(嵌套)所有格量词.有没有办法匹配我想要它(不)在Python中匹配?
好的,所以我正在开发一个项目,我需要一个正则表达式,可以匹配*后跟1-4个空格或制表符,然后是一行文本.现在我正在使用.*在观察后进行测试.但是我可以让它明确匹配1,2或4个空格/制表符,但不能匹配1-4.我正在测试以下块
* test line here
* Second test
* Third test
* Another test
Run Code Online (Sandbox Code Playgroud)
这些是我正在测试的两种模式(?<=(\*[ \t]{3})).*,它们按照预期工作并匹配第二行,如果我用1,2或4替换3,那么如果我用1,4替换它形成以下模式(?<=(\*[ \t]{1,4})).*它不再匹配任何行和我老实说无法理解为什么.我试过谷歌搜索没有成功.我正在使用g(lobal)旗帜.
我刚刚在http://regexcrossword.com/上做了有趣的正则表达式填字游戏- 并且发现我不明白量化群体意味着什么,例如(.)+或(.)*
让我试试http://ole.michelsen.dk/tools/regex.html,它提供了JavaScript和PHP正则表达式引擎:
要匹配的字符串是"Trololo!" (不带引号).(如果打开"全局匹配"改变了某些东西,它会被添加为引导版本,即JS',因为它在PHP模式下没有任何改变.)
JS, (.)+ => 0: Trololo! 1: !
JS', (.)+ => 0: Trololo!
PHP, (.)+ => 0: Trololo! 0: !
JS, (.)* => 0: Trololo! 1: !
JS', (.)* => 0: Trololo!
PHP, (.)* => 0: Trololo! 1: 0: ! 1:
JS, (.){5} => 0: Trolo 1: o
JS', (.){5} => 0: Trolo
PHP, (.){5} => 0: Trolo 0: o
JS, (.){4} => 0: Trol 1: l
JS', (.){4} => 0: Trol …Run Code Online (Sandbox Code Playgroud) 这似乎是我在这里不理解的非常基本的东西.
为什么不"babc"匹配/ a * /?
> "abc" ~~ / a /
?a?
> "abc" ~~ / a * /
?a?
> "babc" ~~ / a * /
?? # WHY?
> "babc" ~~ / a + /
?a?
Run Code Online (Sandbox Code Playgroud) 为什么"hello".match(/^(.*?)?/)[0]评估为 to"h"而不是 to ""?
换句话说,为什么遵循(.*?)带有零或一量词的惰性表达式会?使其变得有点贪婪?
懒惰和贪婪的想法很容易理解,但我只*+在我的正则表达式中使用过一次(在Java中)[A]|[^B]*+(?!C)(A,B,C是任意值),因为它在惰性修饰符导致StackOverflow错误时起作用.
由于大多数搜索引擎无法搜索符号,我找不到任何关于此的文档.那么*+究竟做了什么以及如何做到这一点?
如果我有一个未知的结构字符串:
"stuff I don't care about THING different stuff I don't care about THING ... THING even more stuff I don't care about THING stuff I care about"
我想捕捉"我关心的东西",它总是在最后一次出现之后.有可能出现0次或多次.如果有0次出现则没有我关心的东西.字符串不能以THING开头或结尾.
一些可能的字符串
"stuff I don't care about THING stuff I care about"
"stuff I don't care about"
一些不可能的字符串:
"THING stuff I care about"
"stuff I don't care about THING stuff I don't care about THING"
我目前解决这个问题的方法是使用带有两个贪心量词的正则表达式,如下所示:
if( /.*THING(.*)/ ) {
$myStuff = $1;
}
Run Code Online (Sandbox Code Playgroud)
它似乎有效,但我的问题是两个贪婪量词如何相互作用.第一个(最左边)贪婪量词总是"比第二个更贪婪"吗?
基本上我保证不会得到如下分割:
"stuff I don't care about THING" …
quantifiers ×10
regex ×9
javascript ×3
php ×2
greedy ×1
lookbehind ×1
match ×1
perl ×1
perl6 ×1
prolog ×1
python ×1
raku ×1
rakudo ×1
regex-greedy ×1
regex-group ×1
universal ×1