到目前为止,我写了这个正则表达式,但是我无法从中获取正确的数据:
一些文字:TST =我需要的数据,TSA =我需要比较的更多, SMT =我需要的更多
在等号之前是2-3个大写字母,然后是逗号之前的数据。
<div id='german' tabindex="-1">See in German</div>
<div class='germanContent'>
Blah blah blah in german
</div>
正则表达式提取(文本,TST,需要,SMT,需要),但我试图获得:
0.text 1.TST 2.Data我需要3.TSA 4.我需要比较5.SMT 6.更多我需要
有人可以解释我正在做的错误,我该如何纠正这个正则表达式?
答案 0 :(得分:3)
根据您的原始说明:It's 2-3 capital letters before equality sign and then data for it until comma.
,您可以构建一个相对简单的表达式:[A-Z]{2,3}\s*=\s*(.+?)(,|$)
(示例可用here)。
这应该可以找到2或3个大写字母,后跟0个或更多个空格,后跟一个等号,后跟0个或更多个空格,后跟一些文本。它会在找到逗号或字符串结尾时停止匹配。
这应该将您追踪的数据捕获到正则表达式组中(应该在$output_array
内)。
答案 1 :(得分:2)
答案 2 :(得分:1)
试试这个正则表达式:([A-Z]{2,3}\s=\s)([\w\s]+)
由于您没有告诉我们这些变量中存储了哪种数据,我们无法帮助您解决这些问题。我正在使用[\w\s]+
,但你需要调整它。
您的字段位于匹配组1中。
现场演示regex101.com