![](/img/trans.png)
[英]How to use PHP regular expressions to search a string for word sequences containing repeated words?
[英]Regular expressions: matching words containing sequences
我試圖匹配包含以下內容的單詞: eph gro iss
在這個例子中,我有eph|gro|iss
匹配eph gro iss
: new grow miss eph
。 但是我需要匹配整個單詞。 例如,它應該匹配所有的miss
不只是iss
和grow
不僅僅是gro
謝謝
你可以這樣做:
\b(\w*(eph|gro|iss)\w*)\b
這個怎么運作:
表達式用詞邊界錨點\\b
括起來,所以它只匹配整個單詞。 這些單詞必須包含其中一個文字eph
, gro
或iss
,但是\\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.