RegExp-如何匹配尽可能短的金额



我有我的正则表达式/'(.*)(?:(?:'s*,s*)|(?:')))/
和我的测试代码('He said, "You're cool."' , 'Rawr')
(我的测试代码模拟传递到函数中的参数。)

我将解释我的正则表达式,希望你们中的一些人能对我的问题有所了解

1) /'表示匹配字符串的开头需要有'

2) (.*)表示捕获除n之外的任何字符0次或更多次

3) (?:(?:4)|(?:5))表示不捕获,但尝试执行第4步,如果不起作用,则尝试执行第5步

4) (?:'s*,s*)表示不捕获,但需要有一个包含0个或更多空白字符的',然后是一个包含零个或更多空格字符的,

5) (?:'))表示不捕获,但需要')

所以它似乎应该返回这个(这就是我想要的):
'+He said, "You're cool."+' ,
但它返回:
'+He said, "You're cool."' , 'Rawr+')

如果我将测试代码更改为('He said, "You're cool."' , 'Rawr'(无尾括号),它会返回我想要的内容,但只要我添加最后一个括号,我的OR运算符似乎就可以执行它想要的任何操作。我希望它首先测试是否有逗号,如果有逗号,则中断,如果没有括号,则检查是否有逗号

我已经尝试切换步骤4和步骤5的点,但OR运算符似乎总是默认为(?:'))侧。如何匹配尽可能短的金额

我不认为你的问题是OR运算符,而是.*的贪婪。它将匹配您的完整字符串,然后返回-跟踪,直到以下表达式匹配。该回溯过程中的第一个匹配将是'He said, "You're cool."' , 'Rawr+')。请尝试.*?

相关内容

  • 没有找到相关文章

最新更新