在Java中,我将使用什么正则表达式来匹配只有一个冒号的字符串,并确保冒号出现在任何空格之前?
例如,它应匹配这些字符串:
label: print "Enter input"
But: I still had the money.
ghjkdhfjkgjhalergfyujhrageyjdfghbg:
area:54
但不是
label: print "Enter input:"
There was one more thing: I still had the money.
ghfdsjhgakjsdhfkjdsagfjkhadsjkhflgadsjklfglsd
area::54
答案 0 :(得分:3)
如果您将其与matches
一起使用(需要匹配整个字符串),您可以使用
[^\\s:]*:[^:]*
这意味着:任意多个非whitespace
,非:
字符,然后是:
,然后是更多任意多个非:
个字符。
我真的只使用了两个正则表达式概念:(否定)character classes和repetition。
如果您想在:
之前或之后要求至少一个字符,请将相应的*
替换为+
(如评论中指出的jlordo)。
答案 1 :(得分:0)
以下内容应该有效:
^[^\s:]*:(?!.*:)
如果您的字符串可以包含换行符,请使用DOTALL标志或将正则表达式更改为以下内容:
(?s)^[^\s:]*:(?!.*:)
答案 2 :(得分:0)
这取决于我们所说的空白区域,它可能是
[^\\p{Space}:]*:[^:]
答案 3 :(得分:0)
以下内容可以帮助您入门:
Matcher MatchedPattern = Pattern.compile("^(\\w+\\:{1}[\"\\w\\s\\.]*)$").matcher("yourstring");