簡體   English   中英

正則表達式匹配不屬於較大單詞的單詞

[英]Regex match words that are not part of a larger word

我正在嘗試在 C# 中使用正則表達式來查找一堆文本中的關鍵字列表。 但是,我想非常具體地說明“周圍”文本可以作為關鍵字的內容。

因此,例如,關鍵字“hello”應該在 (hello)、hello.、hello< 中找到,但不能在 hellothere 中找到。

我的主要問題是我不需要分隔符,如果關鍵字是第一個詞或最后一個詞就可以了。 我想另一種看待它的方式是文件開頭和文件結尾應該是可接受的分隔符。

我是 Regex 的新手,所以我希望有人能幫助我找到正確的模式。 到目前為止我有:

[ <(.]+?keyword[<(.]+?

其中 <, (, . 是一些示例分隔符,關鍵字當然是我正在尋找的關鍵字。

你可以使用邊界錨這個詞

\bkeyword\b

僅當不屬於較大單詞的一部分時,它才會找到您的關鍵字。

您需要查看word boundary (\b) 以避免匹配作為另一個單詞的一部分出現的關鍵字(如您的 hellothere 示例)。

也可以在行首(^)和行尾($)添加匹配,控制position可能出現關鍵字的位置。

我想你想要這樣的東西:

(^$|[ <(.])+?keyword($|[<(.]+?)

^$字符分別表示輸入文本的開始和結束。 (如果您指定Multiline行選項,它匹配行的開始/結束而不是文本,但您似乎需要Singleline選項。)

暫無
暫無

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

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