Java 带条件的Regexp查找子字符串
我尝试编写regexp来查找字符串中带有减号的数字Java 带条件的Regexp查找子字符串,java,regex,string,Java,Regex,String,我尝试编写regexp来查找字符串中带有减号的数字 此数字在开始或结束数字上有一个减号(-) 此子字符串可以以空格开头或/和结尾,也可以以字符串开头或结尾 另一个字符串可以包含此子字符串,但没有空格,需要排除此字符串 regexp应该与这些字符串匹配 abc ghhkjl -123 123- gfdhs kljf fdsg -123 fdjol jklp 123- ljfds -123 123- abc ghhkjl-123 123-gfdhs kljf fdsg -123fdjol jklp1
(?<!\S)(?:\d+-|-\d+)(?!\S)
(?
上方的\S
匹配的字符不是空格(否定\S
)。作为一种替代方法,如果要查找单个数字,可以在数字的左侧和右侧重复匹配的单词字符和水平空格字符,该数字的左侧或右侧都有减号:
^(?:\h*\w+\h+)*(\d+-|-\d+)(?:\h+\w+\h*)*$
^
字符串的开头
(?:
非捕获组
\h*
在开头匹配可选的水平空白字符
\w+\h+
匹配1+个单词字符,后跟1+个水平空格字符
)*
关闭分组并重复0多次
(\d+-\d+
捕获组1,带减号的数字
(?:
非捕获组
\h+\w+
匹配1+水平空格字符和1+单词字符
\h*
在末尾匹配可选的水平whitspace字符
)*
关闭分组并重复0多次
$
字符串结尾
< /P>匹配完整字符串的正确思想!如果有任何答案解决了你的问题,你可以考虑点击。✓ 在它的左边,你认为这是有帮助的。
^(?:\h*\w+\h+)*(\d+-|-\d+)(?:\h+\w+\h*)*$