我正在使用PHP。我正在尝试使用正则表达式模式来匹配value =“和”之间的所有内容,即第1行第2行,......,第4行。
value="Line 1
Line 2
Line 3
Line 4"
我已经尝试了/.*?/
,但它似乎无效。
我很感激一些帮助。
感谢。
P.S。我想补充一下,回应一些评论,第一个“和最后一个”之间的所有字符串都是可以接受的。我只是试图找到一种方法来获得介于第一个“和最后一个”之间的所有内容,即使存在“介于两者之间。我希望这是有道理的。谢谢。
答案 0 :(得分:4)
假设所需的字符是“双引号”:
$pat = '/\"([^\"]*?)\"/'; // text between quotes excluding quotes
$value='"Line 1 Line 2 Line 3 Line 4"';
preg_match($pat, $value, $matches);
echo $matches[1]; // $matches[0] is string with the outer quotes
答案 1 :(得分:1)
如果你只是想要回答而不想要特定的正则表达式,那么你可以使用它:
<?php
$str='value="Line 1
Line 2
Line 3
Line 4"';
$need=explode("\"",$str);
var_dump($need[1]);
?>
答案 2 :(得分:1)
/.*?/
具有与新行字符不匹配的效果。如果您也想匹配它们,则需要使用正则表达式,如/([^"]*)/
。
我同意Josh K的观点,在这种情况下不需要正则表达式(特别是如果你知道除了用于分隔字符串的那个之外没有任何顶点)。你也可以采用他给出的解决方案。
答案 3 :(得分:1)
如果必须使用正则表达式:
if (preg_match('!"([^"]+)"!', $value, $m))
echo $m[1];
答案 4 :(得分:1)
您需要s
模式修饰符。类似于:/value="(.*)"/s
答案 5 :(得分:0)
我不是regex
大师,但为什么不爆炸呢?
// Say $var contains this value="..." string
$arr = explode('value="');
$mid = explode('"', $arr[1]);
$fin = $mid[0]; // Contains what you're looking for.
答案 6 :(得分:0)
规范不明确,但您可以尝试这样的事情:
/value="[^"]*"/
value="
按字面意思匹配[^"]*
,即"
以外的任何内容,可能跨越多行"
这不允许"
出现在“真实”引号之间,即使它被例如前面加一个反斜杠。
[…]
是字符类。像[aeiou]
这样的东西匹配任何一个小写元音。 [^…]
是否定的字符类。 [^aeiou]
与除了小写元音之外的任何内容匹配。
.*?
and .*
for regex
.*?