[英]How to match a string line by line in php regex?
我有多個換行符的字符串,每個新行都包含一個新的子字符串。
這是兩行字符串的示例:
$x="Hello
World!
您可以看到Hello和World在第一行! 在換行符中。
每個子字符串以換行符或空格或空格開頭或結尾。
我要匹配這兩行。
我的課程代碼與第二行匹配,而忽略了第一行。
if(preg_match_all("/^\n*\s*(Hello|World!)\s*$/i",$x,$m))
{print_r($m);}
有什么辦法可以解決此問題,以便兩行都可以匹配?
if(preg_match_all("/(Hello|World!)/i",$x,$m))
{
print_r($m);
}
如果用戶^ $,則僅匹配整行。 因此,Hello部分在Hello之前沒有\\ n * \\ s *,因此不會匹配。 如果您像上面那樣更改腳本,它將只查找單詞,而不會在單詞之前或之后有任何東西。
希望能有所幫助。
嘗試這個
$x="Hello
world! ";
preg_match_all("#\b(Hello|World!)\b#",$x,$m) ;
echo count($m)
輸出量
2
我不確定“目標”是什么,但是此正則表達式將匹配這兩行。 我將您的Hello | World更改為(。+?),因為它可以匹配任何字符,因此如果您要解析代碼,則可以匹配變量。
/^(.+?)[\n,\s,\t]{1,8}(.+?)$/
這是您使用新正則表達式的示例,因此,如果我誤解了,您可以看到發生了什么。
<?php
$x="Hello
World!";
if(preg_match_all("/^(.+?)[\n,\s,\t]{1,8}(.+?)$/i",$x,$m))
{print_r($m);}
?>
如果要解析多個序列,則需要確定第一行和第二行之間有哪些潛在字符,然后修改{1,8}以適合空格,制表符,換行符等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.