[英]Typescript: Regex not matching expected pattern
我在打字稿功能中有以下正则表达式:
/([1-9][0-9]*)*?[d]([468]|(?!(22|32|42|52|62|72|82|92|102|200|202))([12][20]{1,2}))([rf!<>=][1-9][0-9]{1,2})*?/g
这个正则表达式的目的是匹配骰子命令,类似于roll20处理骰子命令的方式(例如1d10!投掷1d10,如果它应该落在10上,则投掷另一个d10,依此类推)
前两组工作正常(我可以在我的应用中单独运行此程序,并确认它们可以按预期工作)。
最后一组([rf!<>=][1-9][0-9]{1,2})*?
不匹配,除非我在正则表达式的开头添加^
,在结尾添加$
。
作为附录,如果您对正则表达式本身有任何欢迎的输入,我敢肯定,有更有效的方式编写此正则表达式。
带有*?
惰性量化子模式 在正则表达式模式的末尾将永远不会匹配单个字符,它将始终匹配一个空字符串。
您需要用其贪婪的对等替换懒惰的量词,以避免在此处添加锚([rf!<>=][1-9][0-9]{1,2})*?
-> ([rf!<>=][1-9][0-9]{1,2})*
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.