【问题标题】:Regex for selecting everything but characters between a given symbol [closed]用于选择给定符号之间除字符之外的所有内容的正则表达式 [关闭]
【发布时间】:2020-04-20 15:26:17
【问题描述】:

除了给定符号之间的字符之外,选择所有内容的正则表达式是什么。

如果给定的符号是'%',那么<simple%name%> 应该产生<simple>

【问题讨论】:

  • 只有一个%--text--%,还是该符号会出现多次?
  • @BlackPearl 只有一个
  • 不,除了% 字符之间的所有内容都会产生<simple>。您需要更清楚、更详细地说明问题。

标签: java regex matcher


【解决方案1】:

你可以使用像 "%(.?)%"*

这是我尝试过的示例,考虑到您的输入字符串将是

简单的%name%

String str = "simple%name%";
System.out.println(str.replaceAll("%(.*?)%", ""));

输出将是

简单

【讨论】:

    【解决方案2】:
    • % 匹配字符 %
    • 。匹配任何字符(换行除外)
    • *?查找字符的下一个匹配项

    所以下面一行首先找到 %,然后找到任何其他字符,直到找到 %

    "%.*?%"
    

    举个例子:

    String str = "<Simple%Name 1 % 1a%Foo%>";
    System.out.println(str.replaceAll("%.*?%", ""));
    

    会产生:

    <Simple 1a>
    

    【讨论】:

      猜你喜欢
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      相关资源
      最近更新 更多