我的变量由" $"分隔。并且可以按任何顺序包含点,连字符和下划线但不包含空格。 其实我的正则表达式是:
"\\$(.*?)\\$"
但是,例如,它并不适用于该案例:
我松了12美元,但你松了25美元
结果是" $但你松了25 $"。
我也尝试过:
"\\$\\w+\\$"
但现在,它并不适用于连字符
添加更多详情:
我只希望匹配exepression与0或更多点 - 下划线 - 连字符:
$ $ test_underscore
$测试连字符$
$ $测试
$ test_test2-TEST3 $
$ test.test2-test3 $
如果有像我的第一个例子那样的空白
,则没有任何内容答案 0 :(得分:2)
您可以使用与任何字符匹配的否定字符类,但只有空格和美元:
"\\$[^\\s$]+\\$"
此处,\$
匹配一个文字美元符号,后面可以跟一个或多个符号,而不是空格和美元符号,后跟另一个美元符号。
要仅在美元之间匹配单词字符,点和连字符,请使用白名单方法:
"\\$[\\w.-]+\\$"
答案 1 :(得分:2)
试试这段代码:
Pattern pattern = Pattern.compile("\\$(\\S*)\\$");
Matcher matcher = pattern.matcher(s);
if (matcher.find())
System.out.println(matcher.group(1));
\S*
表示除空格外的任何内容