[英]Regex how to check word boundary conditions unicode
我试图从外部来源检查一个给定的单词(比如matchword )。 目前我在C#中计划使用以下正则表达式模式来覆盖这些单词边界场景( 匹配词应该是单个单词可以用所有可能的句子或单词分隔字符分隔)。 matchword可以在句子的开头/中间/结尾,或者有时它可以与字符串完全匹配。
应涵盖多语言文本,并且不区分大小写。
([\s+,"'\(\[])matchword([\s+;\?\.;,"'\)\]])
一个例子,
假设我的火柴是“测试”(没有引号)
和例句是:
这是test,string - Result - true
这是测试 - 结果 - 错误
这是testest - 结果 - 错误
测试 - 结果 - 是的
我想在你的情况下负面的环顾可能就足够了:
(?<!\w)test(?!\w)
这意味着:单词test不在\\ w字符之前或之后。
如果要在C#中使表达式不区分大小写,则必须使用标志RegexOptions.IgnoreCase
如以下示例所示:
Regex.IsMatch(subjectString, @"(?<!\w)test(?!\w)", RegexOptions.IgnoreCase)
这里更好地解释了环顾四周。 无论如何,涉及\\b
的上述答案在你的情况下要好得多。 只需将此概念视为您可能希望深入了解更好地掌握正则表达式的内容。 它的强大之处在于能够选择更复杂的表达式以包含在前瞻或后瞻组中。 在你的情况下,这只是一种浪费。
尝试\\btest\\b
其中\\ b表示单词的开头和结尾,或者你可以做(?i)\\btest\\b
使其不区分大小写
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.