我想选择 {}
中包含的最后一个组,但是一旦我开始在正则表达式末尾输入 \s
,它就不会选择第二行不再了。有人可以向我解释一下吗?
正则表达式:
\s*(.{10})\s*(\d*)\s*(.{3})\s*(.*?)(\((?>\((?<c>)|[^()]+|\))\))\s\{(.*)\}
测试字符串:
0.00002211 55 7.7 "'Allo 'Allo!" (1982) {A Bun in the Oven (#8.0)}
0...222.02 14 6.7 "$100 Taxi Ride" (2001)
这是我想做的事情的链接:https://regex101.com/r/8qrKxq/2
谢谢!
<小时/>更新
我期望的是这里发生的事情:https://regex101.com/r/8qrKxq/6
在 “$#*!我爸爸说”
处,然后是前 2 个系列名称,它会捕获正确的组。但在那之后不知何故它搞砸了,我不知道如何解决这个问题..
最佳答案
您的正则表达式不包含第二行,因为它不包含 {.*}
类型的内容。如果您尝试使用正则表达式,例如:
0.00002211 55 7.7 "'Allo 'Allo!" (1982) {A Bun in the Oven (#8.0)}
0...222.02 14 6.7 "$100 Taxi Ride" (2001) {9}
它将采用 {} 中包含的 9。如果您希望选择 {} 可选,那么您应该使用
\s*(.{10})\s*(\d*)\s*(.{3})\s*(.*?)(\((?>\((?<c>)|[^()]+|\))\))(?:\s(\{(.*)\}))?
关于javascript - 如何选择此正则表达式中的最后一组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850746/