【发布时间】:2012-10-06 13:37:43
【问题描述】:
如果我从一个空字符串创建一个 RegEx,我如何让它不匹配?
我正在寻找 RegexOptions.DoNotMatchWithEmpty 之类的选项。
澄清一下:
假设我无法控制用于创建 RegEx 的字符串。字符串可以为空,我必须创建 RegEx 对象。我可能可以将 RegEx 设置为 null 并在上游添加大量 null 检查,但我宁愿不这样做。最好的解决方案是 RegexOptions 标志,当 RegEx 使用空字符串构造时,该标志告诉不匹配任何内容。但这不可用。
【问题讨论】:
-
先测试字符串是否为空?
-
你是什么意思,你为什么要这样做?你已经尝试过什么?
-
我对这个问题做了一些澄清。
-
我看不出这个检查背后的理由。正则表达式
""正确匹配空字符串。根据您的使用方式,它还可以匹配非空字符串中的许多位置(每两个字符之间以及字符串的开头和结尾一次)。我可以想到许多其他行为相同的正则表达式,例如"()"- 仅检查空字符串对您没有帮助。如果可以的话,即使".*?"也会匹配空字符串。 -
如果用户给了
".*?",那没关系,因为这是故意的。空的正则表达式字符串意味着用户很可能忘记设置它并且不打算匹配所有内容。在这个特定的程序中,有经过测试的正则表达式列表。从列表顶部的空字符串创建的正则表达式将匹配并停止搜索。这是我想防止的。