如何在等号后提取数据?

时间:2015-08-18 07:33:12

标签: php regex

到目前为止,我写了这个正则表达式,但是我无法从中获取正确的数据:

一些文字: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.更多我需要

有人可以解释我正在做的错误,我该如何纠正这个正则表达式?

3 个答案:

答案 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)

试试这个正则表达式:

([A-Z]{2,3})\s=\s([^,]+)

Demo

此处\s可以替换为\s*

答案 2 :(得分:1)

试试这个正则表达式:([A-Z]{2,3}\s=\s)([\w\s]+)

由于您没有告诉我们这些变量中存储了哪种数据,我们无法帮助您解决这些问题。我正在使用[\w\s]+,但你需要调整它。

您的字段位于匹配组1中。

现场演示regex101.com