[英]Limit Regex to word boundaries
我有一些文字
"Lorem ipsum dolor sit amet, consectetuer adipiscing elit."
我有一個正則表達式,它是根據用戶輸入生成的。
@".*ip.*"
正如您所期望的,這與整行匹配,因此我用單詞邊界包裝了此表達式。
@"\b.*ip.*\b"
因為處理器是貪婪的,所以它仍然匹配整個文本。 因此,我嘗試使重復變得懶惰。
@"\b.*?ip.*?\b"
更好但是匹配
Lorem ipsum
dolor sit amet, consectetuer adipiscing
我該如何擴展原始的@".*ip.*"
模式,使其與整個單詞和捕獲詞完全匹配?
ipsum
adipiscing
這個正則表達式測試器可能對於回答問題很有用
為什么不只使用\\w*
而不是.*?
:
@"\w*ip\w*"
這也將匹配_
和0-9
因為它包含在\\w
。 如果要排除它,可以顯式使用[a-zA-Z]*
代替\\w
。
您已經接近解決方案。 只需用非空格轉義序列\\ S替換點(任何字符):
@"\b\S*?ip\S*?\b"
我認為某些單詞可以包含連字符,因此最好使用模式[\\w-]*ip[\\w-]*
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.