C# 正则表达式关键字
我试图在C#中使用正则表达式在一堆文本中查找关键字列表。但是,我想非常具体地说明“周围”文本可以是什么,以便将某些内容作为关键字计算 例如,关键字“hello”应该在(hello),hello.,hello<中找到,而不是在hellothere中 我的主要问题是,我不需要分隔符,如果关键字是第一个单词或最后一个单词,则可以。我想另一种看待它的方式是,文件的开头和结尾应该是可接受的分隔符 我是新加入Regex的,所以我希望有人能帮我找到正确的模式。到目前为止,我已经:C# 正则表达式关键字,c#,regex,C#,Regex,我试图在C#中使用正则表达式在一堆文本中查找关键字列表。但是,我想非常具体地说明“周围”文本可以是什么,以便将某些内容作为关键字计算 例如,关键字“hello”应该在(hello),hello.,hello
[ <(.]+?keyword[<(.]+?
[我想你想要的是:
(^$|[ <(.])+?keyword($|[<(.]+?)
(^$|[您需要查看单词边界
(\b),以避免匹配作为另一个单词的一部分出现的关键字(如hellothere示例)
您还可以在行首(^)和行尾($)添加匹配,以控制关键字可能出现的位置。您可以使用锚定:
只有当不是较大单词的一部分时,才会找到关键字。单行线允许“.”(点)元字符与行分隔符字符匹配(\r和\n);它对这个正则表达式没有影响,因为只有点在字符类中,它们无论如何都会匹配点。@Alan:我的观点是单线/多线选项改变了^
和$
的含义,而不是
问题表明OP特别想检测
作为单独的字符tor.听起来你认为单线和多线是单开关设置的对立状态。名称似乎暗示了同样多的含义,但实际上它们是完全独立的:单线更改“.”的含义,多线更改“^”和“$”的含义。“单线”“总是”是一个不幸的名字;有些口味称之为DOTALL模式,这更具描述性。
\bkeyword\b