我有一个很长的字符串,我试图通过特定的单词提取在该字符串中消除的特定数据。
例如,这是字符串的子集:
Current Owner 123 Capital Calculated
我希望提取
123 Capital
正如您所看到的,它被#34;当前所有者"所包围。 (左边有一堆任意空格)"计算" (再次使用任意空格)向右。
我试过这个,但我在RegEx有点新鲜。任何人都可以帮我创建一个更有效的RegEx吗?
preg_match("/Owner[.+]Calculated/",$inputString,$owner);
谢谢!
答案 0 :(得分:2)
字符类定义一组字符。说,“匹配由类指定的一个字符”。将点.
和量词放在capturing组内,并启用s
修饰符,以强制点跨越换行符。
preg_match('/Owner(.+?)Calculated/s', $inputString, $owner);
echo trim($owner[1]);
注意: +
是greedy运算符,这意味着它将尽可能多地匹配,并且仍允许正则表达式的其余部分匹配。使用+?
来防止贪婪意味着“一个或多个 - 最好尽可能少”。
答案 1 :(得分:0)
您可以使用外观作为
(?<=Owner)\s*.*?(?=\s+Calculated)
使用示例
$str = "Current Owner 123 Capital Calculated ";
preg_match("/(?<=Owner)\s*.*?(?=\s+Calculated)/", $str, $matches);
print_r($matches);
将提供输出
Array ( [0] => 123 Capital )
答案 2 :(得分:0)