作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下一组字符串:
some_param[name]
some_param_0[name]
我希望从中捕获some_param、0、name。我的正则表达式知识非常薄弱。我尝试了以下方法,但它不适用于这两种情况。
/^(\D+)_?(\d{0,2})\[?(.*?)\]?$/.exec("some_param_0[name]") //works except for the trailing underscore on "some_param"
正确的正则表达式是什么?
最佳答案
/^(\w+?)_?(\d{0,2})(?:\[([^\[\]]*)\])?$/
(\w+?)
使用 non-greedy quantifier捕获标识符部分,不带任何尾随 _
。
_?
是贪婪的,因此会击败前一部分中的 +?
。
(\d{0,2})
将捕获 0-2 位数字。它是贪婪的,所以即使标识符和数字之间没有 _
,它也会捕获数字。
(?:...)?
使方括号部分可选。
\[([^\[\]]*)\]
捕获本身不包含方括号的方括号部分的内容。
'some_param_0[name]'.match(/^(\w+?)_(\d{0,2})(?:\[([^\[\]]*)\])?$/)
生成一个数组,例如:
["some_param_0[name]", // The matched content in group 0.
"some_param", // The portion before the digits in group 1.
"0", // The digits in group 2.
"name"] // The contents of the [...] in group 3.
请注意,非贪婪量词可能会与 \d{0,2}
中的有界重复发生奇怪的交互。
'x1234[y]'.match(/^(\w+?)_?(\d{0,2})(?:\[([^\[\]]*)\])?$/)
产量
["x1234[y]","x12","34","y"]
关于javascript - 包含可选子字符串的正确正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8497781/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!