【发布时间】:2012-01-07 06:46:02
【问题描述】:
您好,我正在使用正则表达式,但我对元字符感到困惑,尤其是 '*' 和 '?'。
'*' 应该匹配前面的字符 0 次或更多次。
例如,'ta*k' 应该匹配 'tak' 和 'tk'。
但我根本不会认为这是真的 - 这是我的推理:
为了:
正则表达式:我需要一个 't'
字符串:我没有't'
regexp:好的,你的下一个字符必须是'a'
字符串:是的
regexp:好的,继续给我字符,直到你的字符不是'a'
字符串:好的。我刚刚给了你'k'
regexp:好的,你的下一个字符必须是'k'
字符串:我没有更多字符了!
正则表达式:失败
对于传统知识:
正则表达式:我需要一个 't'
字符串:我没有't'
regexp:好的,你的下一个字符必须是'a'
字符串:不,它是一个 'k'
正则表达式:失败
谁能帮我解释一下为什么 'tak' 和 'tk' 匹配 'ta*k'?
【问题讨论】:
-
为什么会这样?结果与元字符的预期语义相匹配。你描述的行动方案没有。
-
也重新标记:在这个问题中没有关于 Action-Script 的内容。
-
嘿,谢谢你们的帮助,你们所有的答案都很有道理。我想要带回家的一点是,当正则表达式解析自己时,它需要从任何文字中向前看,看看是否有任何元字符,然后一起测试。我想我的下一个问题是“如果有很多像 '.* 这样的元字符怎么办?”,但我会读一下 FakeRainBrigand 离开的那个网站,看看我自己能不能弄清楚:)跨度>
标签: regex