我有一个从配置文件中读取的字符串.弦的结构如下;
(long_string)long_string(long_string)
Run Code Online (Sandbox Code Playgroud)
括号中的任何项目(包括括号本身)都是可选的.我有以下正则表达式匹配整个字符串,但我无法弄清楚如何使用"?"使正则表达式的某些部分可选.
以下是一些有效的输入字符串
(a)like(1)
like(very long string here)
like
Run Code Online (Sandbox Code Playgroud)
这是我的正则表达式只匹配第一个;
^\((?<short>.*)\)(?<text>.*)\((?<return>.*)\)$
Run Code Online (Sandbox Code Playgroud)
如何将我的正则表达式转换为匹配可选括号?
使用不匹配的组围绕两个子模式,并使它们可选:(?:expr)
^(?:\((?<short>.*)\))?(?<text>.*)(?:\((?<return>.*)\))?$
Run Code Online (Sandbox Code Playgroud)
如果可能的话,使通用表达.*更具体,也许用[^()]+:
^(?:\((?<short>[^()]+)\))?(?<text>[^()]+)(?:\((?<return>[^()]+)\))?$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14076 次 |
| 最近记录: |