regex 对正则表达式中的字符求反[已关闭]

mspsb9vt  于 2022-12-14  发布在  其他
关注(0)|答案(4)|浏览(122)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

1年前关闭。
Improve this question
如何编写符合以下条件的正则表达式?

  • 无编号
  • 无特殊字符
  • 无空格

成串地

ao218c7q

ao218c7q1#

字符类[^ ]中的脱字符是大多数正则表达式实现(Perl、.NET、Ruby、Javascript等)中常见的求反运算符。

[^\W\s\d]
  • ^-匹配不在字符类中的任何内容
  • \W-匹配非单词字符(单词字符将被定义为a-z、A-Z、0-9和下划线)。
  • \s-匹配空白(空格、制表符、回车符、换行符)
  • \d-匹配0-9

或者,您可以采取另一种方法,只包含您想要的内容:

[A-Za-z]

这里的主要区别是第一个表达式包含下划线。这也是一种用你所想的相同术语来编写表达式的方法。但是如果你反过来想包含字符而不是排除它们,那么有时候会得到一个更容易阅读的正则表达式。
我并不完全清楚你不需要哪些特殊字符,但我把两种解决方案都写了出来,以防其中一种比另一种更适合你。

rwqw0loc

rwqw0loc2#

在Perl中,它类似于:

$string !~ /[\d \W]/

当然,这取决于您对“特殊字符”的定义。\W匹配所有非单词字符。单词字符是任何字母数字字符加上空格字符。

inn6fuwd

inn6fuwd3#

请尝试^[^0-9\p{P} ]$

kkbh8khc

kkbh8khc4#

var StringInputToClean = @"[:(M)?*a',\y<>&a#~%{}+.@\\ /27!;$+]";

var pattern = @"[^a-zA-Z0-9\s]";

string replacement = "";

var result = Regex.Replace(StringInputToClean, pattern, replacement);

相关问题