【问题标题】:Get string between special characters using regex in Java在Java中使用正则表达式获取特殊字符之间的字符串
【发布时间】:2017-05-08 20:03:32
【问题描述】:

我正在尝试获取输入字符串的“@function”和“@”之间的字符串:

inputText = "@function square @default 2 @type Int @brief squares default number"

为了得到'@function'和'@'之间的文本,正则表达式是什么?

为了以下(在 Java 中):

Pattern p = Pattern.compile( some magic regex expression... );
Matcher m = p.matcher(inputText);
functionName = m.group;
System.out.println(functionName);

打印“正方形”

【问题讨论】:

标签: java regex string regex-group


【解决方案1】:

正则表达式:

@function(.*?)@

这应该将“正方形”放入第一个捕获组。然后您可以使用Matcher.group(int) 来获取该组。如下代码:

functionName = m.group(1);

组(整数组) 返回给定组在上一次匹配操作期间捕获的输入子序列。

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#group(int)

编辑

添加 '\s' 来修剪空格

https://regex101.com/r/PH54FV/1

【讨论】:

  • 我收到异常:“线程“main”中的异常 java.lang.IllegalStateException:在 java.util.regex.Matcher.group(Matcher.java:485) 找不到匹配项”不知道为什么.
  • 空格转义的反斜杠需要自己转义。我删除了它们以帮助减轻一些混乱
  • 另外,您需要像@JoopEggen 指出的那样执行匹配操作
  • 我认为@yahavit 有一个更好的方法。 .* 捕获是滑溜溜的小动物。让它不情愿会有所帮助,但 not @ 方法更可靠。
猜你喜欢
  • 2017-07-16
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多