Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式关键字_C#_Regex - Fatal编程技术网

C# 正则表达式关键字

C# 正则表达式关键字,c#,regex,C#,Regex,我试图在C#中使用正则表达式在一堆文本中查找关键字列表。但是,我想非常具体地说明“周围”文本可以是什么,以便将某些内容作为关键字计算 例如,关键字“hello”应该在(hello),hello.,hello

我试图在C#中使用正则表达式在一堆文本中查找关键字列表。但是,我想非常具体地说明“周围”文本可以是什么,以便将某些内容作为关键字计算

例如,关键字“hello”应该在(hello),hello.,hello<中找到,而不是在hellothere中

我的主要问题是,我不需要分隔符,如果关键字是第一个单词或最后一个单词,则可以。我想另一种看待它的方式是,文件的开头和结尾应该是可接受的分隔符

我是新加入Regex的,所以我希望有人能帮我找到正确的模式。到目前为止,我已经:

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

[我想你想要的是:

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

(^$|[您需要查看
单词边界
(\b),以避免匹配作为另一个单词的一部分出现的关键字(如hellothere示例)

您还可以在行首(^)和行尾($)添加匹配,以控制关键字可能出现的位置。

您可以使用锚定:


只有当不是较大单词的一部分时,才会找到关键字。

单行线允许“.”(点)元字符与行分隔符字符匹配(\r和\n);它对这个正则表达式没有影响,因为只有点在字符类中,它们无论如何都会匹配点。@Alan:我的观点是单线/多线选项改变了
^
$
的含义,而不是
问题表明OP特别想检测
作为单独的字符tor.听起来你认为单线和多线是单开关设置的对立状态。名称似乎暗示了同样多的含义,但实际上它们是完全独立的:单线更改“.”的含义,多线更改“^”和“$”的含义。“单线”“总是”是一个不幸的名字;有些口味称之为DOTALL模式,这更具描述性。
\bkeyword\b