【发布时间】:2021-11-24 07:19:24
【问题描述】:
我对一些正则表达式感到困惑。
测试字符串例如
Path.parent.child[0]
我需要提取“父” 我总是知道测试字符串的开始“路径”和结束“孩子 [0]”。 end 也可以是“child[1]”或没有“[]”
我尝试使用:(?<=Path.).*?(?=.child[0])
但它找不到匹配项。我认为子字符串中的 [] 是问题所在。
【问题讨论】:
-
您必须转义左方括号
(?<=Path.).*?(?=\.child\[[0-9]+])您也可以使用捕获组Path\.(\w+)\.child\[[0-9]+]编写没有环视的内容 -
如何在我的 c# 代码中使用它?
-
在此处查看 C# 示例 regex101.com/r/Ui1FFR/1/codegen?language=csharp
-
为什么你的正则表达式中没有点?
-
string my Path = "Path" , string myChild="child[0]" 。然后我喜欢把它放在我的表达式中,比如 var results = regex.match(testString,$"{myPath}\.(w+)\.{myChild}[[0-9]+])