使用正则表达式从引号之间提取值


Extract value from between quotes with regex

我有以下字符串:

feature name="osp"

我需要提取部分字符串,并将它们放入一个新字符串中。单词功能可以更改,引号内的单词也可以更改,所以我需要能够捕获任何可能的实例。name="部分始终相同。我需要的结果是:

feature osp

我需要过滤掉字符串中的name=和引号。

我用这个^''w*''s来获得第一个功能部分,但不知道如何使用正则表达式从字符串中提取osp。我一直在看RegEx:在引号之间抓取值,但无法获得将两者结合在一起的RegEx来获得我需要的结果。我在PHP中工作,所以目前正在使用preg-match。有人能帮忙吗?

我会选择

('w+)'s+name's*='s*"([^"]*)

它稍微慢一点,但它允许任意数量的空格即使使用Alexandru的测试,它也能正确地捕获第一个单词。

在regex101中查看它的工作原理。

问候

试试这样的东西:

preg_match('/(.+)name="(.+?)"/', $string, $matches);
echo $matches[1] . $matches[2];

@vuryss 的改进版本

preg_match('/(.*?)name="(.*?)"/ims', $string, $matches);    
echo $matches[1] . $matches[2];