簡體   English   中英

從一個單詞之后但在另一個單詞之前的字符串中獲取特定單詞?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM