Java 排除正则表达式中的空格,但不包括kep下划线和连字符
我有一个以“$”分隔的变量,它可以包含点、连字符和下划线,但不能包含空格。 实际上,我的正则表达式是:Java 排除正则表达式中的空格,但不包括kep下划线和连字符,java,regex,Java,Regex,我有一个以“$”分隔的变量,它可以包含点、连字符和下划线,但不能包含空格。 实际上,我的正则表达式是: "\\$(.*?)\\$" 但它不适用于这种情况例如: 我丢了12美元,但你丢了25美元$ 结果是“$但你失去了25$” 我还尝试了: "\\$\\w+\\$" 但现在,连字符不起作用 添加更多详细信息: 我只希望使用0或更多点下划线连字符匹配表达式,如下所示: $test_下划线$ $test连字符$ $test$ $test_test2-test
"\\$(.*?)\\$"
但它不适用于这种情况例如:
我丢了12美元,但你丢了25美元$
结果是“$但你失去了25$”
我还尝试了:
"\\$\\w+\\$"
但现在,连字符不起作用
添加更多详细信息:
我只希望使用0或更多点下划线连字符匹配表达式,如下所示:
$test_下划线$
$test连字符$
$test$
$test_test2-test3$
$test.test2-test3$
如果有像我的第一个示例那样的空白,则没有任何内容您可以使用与除空白和美元之外的任何字符匹配的否定字符类:
"\\$[^\\s$]+\\$"
此处,\$
匹配文字美元符号,该符号后面可以跟一个或多个符号,而不是空格和美元符号,后面跟另一个美元符号
要仅在美元之间匹配字符、点和连字符,请使用白名单方法:
"\\$[\\w.-]+\\$"
您可以使用与除空格和美元之外的任何字符匹配的否定字符类:
"\\$[^\\s$]+\\$"
此处,\$
匹配文字美元符号,该符号后面可以跟一个或多个符号,而不是空格和美元符号,后面跟另一个美元符号
要仅在美元之间匹配字符、点和连字符,请使用白名单方法:
"\\$[\\w.-]+\\$"
请尝试以下代码:
Pattern pattern = Pattern.compile("\\$(\\S*)\\$");
Matcher matcher = pattern.matcher(s);
if (matcher.find())
System.out.println(matcher.group(1));
\S*
表示除空白以外的任何内容请尝试以下代码:
Pattern pattern = Pattern.compile("\\$(\\S*)\\$");
Matcher matcher = pattern.matcher(s);
if (matcher.find())
System.out.println(matcher.group(1));
\S*
表示除空格以外的任何内容您期望的输出是什么?您期望的输出是什么?但是,当它包含两个条目时,它也将作为一个条目匹配$str$$str2$
。但是,当它包含两个条目时,它也将作为一个条目匹配$str$$str2$
。