Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排除正则表达式中的空格,但不包括kep下划线和连字符_Java_Regex - Fatal编程技术网

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$