在Java中使用正则表达式获取特殊字符之间的字符串

在Java中使用正则表达式获取特殊字符之间的字符串,java,regex,string,regex-group,Java,Regex,String,Regex Group,我试图为输入字符串获取介于“@函数”和“@”之间的字符串: inputText = "@function square @default 2 @type Int @brief squares default number" 要获得'@function'和'@'之间的文本,正则表达式是什么 为了实现以下目标(在Java中): 要打印“square”regex: @函数(.*)@ 这应该将“square”放入第一个捕获组。然后可以使用Matcher.group(int)获取该组。如下代码所示: f

我试图为输入字符串获取介于“@函数”和“@”之间的字符串:

inputText = "@function square @default 2 @type Int @brief squares default number"
要获得'@function'和'@'之间的文本,正则表达式是什么

为了实现以下目标(在Java中):

要打印“square”

regex:

@函数(.*)@

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

functionName=m.group(1)

集团(国际集团) 返回给定组在上一次匹配操作中捕获的输入子序列

编辑

添加了“\s”以修剪空白

正则表达式:

@函数(.*)@

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

functionName=m.group(1)

集团(国际集团) 返回给定组在上一次匹配操作中捕获的输入子序列

编辑

添加了“\s”以修剪空白


它将是
@函数
,后跟零个或多个非
@
的字母。模式的JavaDocs解释了字符类:它将是
@function
,后跟零个或多个非
@
的字母。模式的JavaDocs解释了字符类:我得到了异常:“线程“main”java.lang.IllegalStateException中的异常:在java.util.regex.Matcher.group(Matcher.java:485)中找不到匹配项”不确定原因。空格转义的反斜杠需要自己转义。我删除了它们以帮助缓解一些混乱。此外,您需要执行@JoopEggen指出的匹配操作。我认为@yahavit有一个更好的方法<代码>*
捕获的是狡猾的生物。使其不情愿有帮助,但not@方法更可靠。我得到了异常:“线程中的异常”main“java.lang.IllegalStateException:在java.util.regex.Matcher.group(Matcher.java:485)中找不到匹配项”不确定原因。空格转义的反斜杠需要自己转义。我删除了它们以帮助缓解一些混乱。此外,您需要执行@JoopEggen指出的匹配操作。我认为@yahavit有一个更好的方法<代码>*
捕获的是狡猾的生物。使其不情愿有帮助,但not@方法更可靠。
Pattern p = Pattern.compile( some magic regex expression... );
Matcher m = p.matcher(inputText);
functionName = m.group;
System.out.println(functionName);