正则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