正则expression式*不*匹配任何字符
我知道这是一个相当奇怪的目标,但是对于我们的系统之一,我们需要不过滤任何input,并让腐败进入系统。
我目前的正则expression式是“ \^.*
”
问题是,它不符合计划的字符…但是对于一个匹配,它的工作。 使它不起作用的string是^ @ jj(基本上任何有^的东西)。
现在不匹配任何字符的最好方法是什么? 我正在考虑删除“ \
但只有这样才能将“不”变成“开始”。
除了在一个字符类( []
)内, ^
字符并不意味着“不”。 如果你不想匹配任何东西,你可以使用一个匹配任何东西的负面预测: (?!.*)
。
一个简单而便宜的正则expression式,永远不会匹配任何东西,是匹配一些简单无法比拟的东西,例如: \b\B
这个正则expression式根本不可能匹配,因为这是一个矛盾。
参考
- regular-expressions.info \ Word边界
-
\B
是\b
的否定版本。\B
匹配\b
没有的每个位置。
-
另一个很好的支持和快速模式,将无法匹配任何保证是恒定的时间:
$unmatchable pattern
$anything goes here
等
$
当然表示行尾。 没有字符可能会超过$
所以不可能进一步的状态转换。 额外的好处是你的模式是直观的,自我描述和可读的!
为什么不匹配所有的字符,而不是试图匹配任何字符? ^.*$
应该做的伎俩。 如果你不得不匹配任何字符,那么试试^\j$
(当然,假设你的正则expression式引擎在你提供一个无效的字符类的时候不会抛出一个错误,如果是这样的话,试试^()$
。 RegexBuddytesting表明这可能工作。
^只有当它在类中时(例如[^ az]除了az以外才有意义)。 你用反斜杠把它变成了文字。
你想要做的是[^] *,但这不合法。 你可以尝试类似的东西
" {10000}"
这将匹配正好10,000个空格,如果这比你的最大input长,它永远不应该匹配。
((?iLmsux))
试试这个,只有当string为空时才匹配。
你想什么都没有匹配? 负面看起来似乎很明显,但可能会很慢,也许^$
(只匹配空string)作为替代?
你有没有尝试过这个简单的正则expression式? [^.]*
呃我知道这有点晚,但是如果正则expression式是空的,你根本就不会读任何input