正则表达式匹配整个字符串,仅此而已
Posted
技术标签:
【中文标题】正则表达式匹配整个字符串,仅此而已【英文标题】:Regex matching the entire string and nothing else 【发布时间】:2021-10-09 06:08:47 【问题描述】:我正在尝试使用正则表达式匹配字符串TF8/Z2IF
。我只想匹配那个字符串而不是别的。我在匹配其他类似字符串TF8/Z2IFPP
或1TF8/Z2IF
时遇到问题。有人可以告诉我如何只匹配TF8/Z2IF
吗?
【问题讨论】:
使用开始和结束标记:^TF8/Z2IF$
。但更好的是,如果您想要完全匹配,为什么不直接使用 C# 字符串相等?
使用正则表达式也将比 c# 中的直接字符串比较慢得多
那么为什么在测试时不起作用。如果它在这个网站上尝试 ^$ 它不起作用regexr.com
您需要更明确地说明什么在 regexr 上不起作用 - 保存您失败的尝试并发布直接链接。我们无法对“我尝试了你所说的但没有用”做任何事情 - 但我会犯“你可能误解或无法实施我们所说的”的错误(因为如果我们'我犯了一个错误,我们中的一个人现在会纠正我们的????)
【参考方案1】:
您可能忘记将^
放在模式的开头,将$
放在模式的末尾..
..但如果您要搜索确切的字符串,只需使用 ==
或 .Equals
- 正则表达式对性能造成不必要的影响。
如果您的意思是您有一个充满单词的文档并且想要“整个单词”样式搜索,请在模式前后使用\b
:
var input = "This is a test that is testing latest regex attempts";
var r = new Regex(@"\btest\b");
r.IsMatch(input); //true
input = "Now I attest we're testing non whole word tests";
r.IsMatch(input); //false
\b
表示“单词边界”,在概念上是“输入的开头”、“空格”、“标点符号”等,因此放在“test”的开头和结尾意味着如果文档包含“test " 匹配但不匹配 "attest" 或 "testing"
【讨论】:
@arne 在 C# 中使用var
在语法上是有效的,并且可以从赋值的右侧轻松推断出变量类型以上是关于正则表达式匹配整个字符串,仅此而已的主要内容,如果未能解决你的问题,请参考以下文章