[英]Get specific words from a string that is after one word but before another?
想知道從字符串中獲取單詞的最佳方法,但是在指定單詞之后和之前的單詞之前的任何單詞。
示例:
$string = "Radio that plays Drum & Bass music";
我想回聲一下'Drum&Bass'部分,所以播放后的任何單詞和音樂前的任何單詞(在播放和音樂之間)
有任何想法嗎?
傑米
單程:
preg_match('/plays (.*) music/', $string, $match);
echo $match[1];
將preg_match_all()
與使用外觀斷言和字邊界的正則表達式一起使用:
preg_match_all('/(?<=\bplays\b)\s*(.*?)\s*(?=\bmusic\b)/', $string, $matches);
說明:
(?<=
- 正面觀察的開始(如果在前面) \\bplays\\b
- 單詞plays
)
- 積極的觀察結束 \\s*
- 匹配單詞之間的可選空格 (.*?)
- 匹配(並捕獲)其間的所有單詞 \\s*
- 匹配單詞之間的可選空格 (?=
- 積極前瞻的開始(如果跟着) \\bmusic\\b
- music
這個詞 )
- 積極前瞻的結束 如果您希望單詞是動態的,可以用變量替換它們(使用字符串連接, sprintf()
或類似)。 在插入正則表達式中的單詞之前逃避它們很重要 - 使用preg_quote()
來實現此目的。
可視化:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.