用于查找匹配字符串的java正则表达式

用于查找匹配字符串的java正则表达式,java,regex,Java,Regex,我的字符串模式是 "hbfj-nbsp-nbsp-wsefj-f-ejsf-sdfh-sjkf-df-sdjfk-sdfhb-jdgh-nbsp-djg-hdr" 我尝试过此模式“(\\w+)-(\\w+)-(\\w+)-(\\w+)”,但它提供了精确匹配。这些类型的字符串需要匹配0到3次。尝试使用这个正则表达式:字符串。匹配(^(\\w+(-){0,3}$”我想您想提取第一个连字符分隔的单词(最多4个): 如果找不到合适的结果,将返回空白。您希望看到什么?最多三个连字符的任何匹配可以显示预期

我的字符串模式是

"hbfj-nbsp-nbsp-wsefj-f-ejsf-sdfh-sjkf-df-sdjfk-sdfhb-jdgh-nbsp-djg-hdr"

我尝试过此模式
“(\\w+)-(\\w+)-(\\w+)-(\\w+)”
,但它提供了精确匹配。这些类型的字符串需要匹配0到3次。

尝试使用这个正则表达式:
字符串。匹配(^(\\w+(-){0,3}$”

我想您想提取第一个连字符分隔的单词(最多4个):


如果找不到合适的结果,将返回空白。

您希望看到什么?最多三个连字符的任何匹配可以显示预期的输出/结果吗?它只是一个结果还是你想以某种方式分割它?对于
“a-b-c”
,它应该捕获
“a-b-”
还是整个结果?预期输出“hbfj nbsp wsefj”,如果字符串是hbfj nbsp那么“hbfj nbsp”预期输出“hbfj nbsp wsefj”,如果字符串是hbfj nbsp那么“hbfj nbsp”,它返回布尔型子字符串
String words = str.replaceAll("^(\\w+(-\\w){0,3})?.*", "$1");