試圖檢測一條訊息中是否有 5 次或更多提及。
例如:
@Boddy is doing great with @shirly @rebecca @jimmy and @mom
以上將算作一場比賽。這不會算作匹配:
@Boddy is doing great with @shirly @rebecca @jimmy and ...
最好,@@@@@也不應該算,但不要太重要!
我試過了
@([^@ ] ){5,}
但沒有運氣,它突出顯示所有 5 而不是整個字串。
uj5u.com熱心網友回復:
使用覆寫整個字串的模式:
^.*@.*@.*@.*@.*@.*$
演示
uj5u.com熱心網友回復:
假設:
- 查看您的資料,您可能想要斷言“@”前面是起始線錨點或空格;
- 您希望避免串聯 '@' 以防止誤報。
考慮到這些,也許您可??以嘗試:
^(?:[^@]*(?<!\S)@\w ){5}.*$
看過一個在線演示。
^- 起跑線錨;(?:- 打開非捕獲組;[^@]*- '@' 以外的 0 個(貪婪的)字符;(?<!\S)- 斷言位置的負向回溯前面沒有非空格;@\w- 帶有 1 (貪婪)字字符的文字“@”;){4}- 關閉非捕獲組并再匹配4次;
.*- 任何 0 (貪婪)字符;$- 端線錨。
uj5u.com熱心網友回復:
您可以通過在否定字符類之后添加 @ 來更改模式,也可以使用否定字符類結束模式。
使用否定字符類還可以防止不必要的回溯。如果不需要捕獲組,可以使用非捕獲組(?:
注意也[^@]*可以匹配換行符
^([^@]*@){5,}[^@]*$
查看正則運算式演示。
如果你想匹配提及,@@@@@不應該匹配并且你不想匹配換行符,你可以\B在 @ 之前添加一個非單詞邊界。
然后在匹配@ 之后匹配至少一個除空白字符或@ 之外的單個字符。
^[^@\n\r]*(\B@[^@\s][^@\n\r]*){5,}$
查看另一個正則運算式演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/409279.html
標籤:
上一篇:如何在特定模式后獲取字串
