我对 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/

10-10 21:22
查看更多