【问题标题】:Java Regex match and replaceJava 正则表达式匹配和替换
【发布时间】:2016-06-16 11:27:39
【问题描述】:

我设置了一些字符如下:

[A-Za-z0-9/-?:().,’+#=! ” %& * <>; {@\r\n] 

我必须用java编写一个程序来确保输入没有任何字符超出这个集合,如果有,我必须用空格替换它们。

我怎样才能做到这一点?请只使用 Java 6。

【问题讨论】:

  • 另外,当你说“out of this set”时,你的意思是要替换 in 这个 set 中的字符,还是 not in 这一套?

标签: java regex str-replace


【解决方案1】:

String str = str.replaceAll("([^A-Za-z0-9/\\-?:\\(\\)\\.,’\\+#=! \\” %&amp; \\* &lt;&gt;; \\{@\\r\\n])", " ")

基本上,如果您有一个不在“abc”中的集合,您可以使用插入符号来否定该组 --> [^abc]

这里有一个很好的指南来更好地使用正则表达式: http://www.regular-expressions.info/

如果你想测试,这里有另一个很棒的工具: https://regex101.com/

【讨论】:

  • "\s" 不是有效的替换字符串。这是一个字符类; Java 怎么知道要替换这些字符中的什么?
  • 这在 java 中不起作用。你必须避开斜线。
  • 我们为什么要通过答案来鼓励这个可怕的问题?
【解决方案2】:

执行以下操作。 [A-Z] 匹配范围内的任何内容,而 [^A-Z] 匹配范围外的任何内容。这将在 Java 中运行。

String out = input.replaceAll("[^A-Za-z0-9\\/\\-?:().,\'+#=!\"%&*<>;{@\\r\\n]", " ");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2011-09-15
    • 2012-11-23
    相关资源
    最近更新 更多