我对 Java 的正则表达式的工作方式感到非常困惑。我想从如下所示的模式中提取两个字符串:
String userstatus = "username = not ready";
Matcher matcher = Pattern.compile("(\\.*)=(\\.*)").matcher(userstatus);
System.out.println(matcher.matches());
但是打印这将返回false。我想获取用户名,以及它后面的空格,以及等号右侧的状态字符串,然后将它们分别存储到两个字符串中。
我该怎么做?谢谢!
因此生成的字符串应如下所示:
String username = "username ";
String status = " not ready";
最佳答案
首先,我假设您这样做是作为正则表达式的学习练习,因为非正则表达式解决方案更容易实现和理解。
您的解决方案的问题在于您正在转义点,告诉正则表达式引擎您想从字面上匹配一个点 '.'
,而不是“任何字符”。解决此问题的一个简单方法是删除 \\
:
(.*)=(.*)
Demo.
这会奏效,但并不理想。更好的方法是说“匹配除
=
之外的所有内容,如下所示:([^=]*)=(.*)
Demo.
关于Java regex - 如何获取空格和字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33593293/