我有一个文件,其中包含需要从类似 JSON 的语法中提取的行。 我的正则表达式在大多数情况下运行良好。它将所需的符号提取到第二个捕获组中。但我注意到有时我想要的文本可以选择包含在一些我想忽略的标签中。
示例文件:
{"title_available" "text1"}
{"title_value" "<c(20a601)>text2"}
{"tags"
{"all" "text3"}
{"ignore" "text4"}
{"chargeFactor" "text5 %1%"}
{"resourceSpeed" "%1% text6"}
}
{"rules" "bla-bla-bla\n\n \"BLA\" bla-bla-bla."}
{"id1" "<c(c3baae)>text7</c>"}
我的正则表达式:
\s+{"\S+" "(
所需输出:
text1
text2
text3
text4
text5 %1%
%1% text6
bla-bla-bla\n\n \"BLA\" bla-bla-bla.
text7
电流输出:
all ok except:
text7</c>
我想我需要以某种方式对第二个捕获组使用前瞻,但我没有找到如何操作。另外,我不确定是否应该使用捕获组来跳过第一个可选
附注模式的速度或简单性并不重要。
您的正则表达式似乎没有排除第三个捕获组中的结束标记
</c>
。要解决此问题,您可以调整正则表达式以排除结束标记(如果存在)。
喜欢:
\s+{"\S+" "(?:<c\S+>)?(.+?)(?:<\/c>)?"}