簡體   English   中英

正則表達式:匹配包含序列的單詞

[英]Regular expressions: matching words containing sequences

我試圖匹配包含以下內容的單詞: eph gro iss

在這個例子中,我有eph|gro|iss匹配eph gro issnew grow miss eph 但是我需要匹配整個單詞。 例如,它應該匹配所有的miss不只是issgrow不僅僅是gro謝謝

你可以這樣做:

\b(\w*(eph|gro|iss)\w*)\b

這個怎么運作:

表達式用詞邊界錨點\\b括起來,所以它只匹配整個單詞。 這些單詞必須包含其中一個文字ephgroiss ,但是\\w*部分允許文字出現在整個單詞中的任何位置。

這里重要的是你需要對“單詞”采用一些特定的定義。 如果您對正則表達式定義沒有問題,那么單詞是與[a-zA-Z0-9_]+匹配的序列,那么您可以逐字使用上述內容。

如果您對單詞的定義是其他內容,則需要適當地替換\\b anchors和\\w類。

嘗試這個:

\b([a-zA-Z]*(?:eph|gro|iss)[a-zA-Z]*)\b

分解:

  • \\b - 單詞邊界
  • ( - 開始捕獲
  • [a-zA-Z]* - 零個或多個字母
  • (?:eph|gro|iss) - 你的原始正則表達式,非捕獲
  • [a-zA-Z]* - 零個或多個字母
  • ) - 結束捕獲
  • \\b - 單詞邊界

示例輸出:

php > $string = "new grow miss eph";
php > preg_match_all("/\b([a-zA-Z]*(?:eph|gro|iss)[a-zA-Z]*)\b/", $string, $matches);
php > print_r($matches);
Array
(
    [0] => Array
        (
            [0] => grow
            [1] => miss
            [2] => eph
        )

    [1] => Array
        (
            [0] => grow
            [1] => miss
            [2] => eph
        )

)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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