让我给你一个非常简单的例子。有一条线str
,比方说:
user=123456(somelogin)
您需要获取用户 ID 和他的登录名。现在我这样做了:
String id = str.replaceAll(".*user=(\\d+).*", "$1");
String name = str.replaceAll(".*user=\\d+\\((.*)\\).*", "$1");
有没有一种通用的方法可以通过组合 2 个正则表达式一步完成?
也许它不会像在支持元组或解构的语言中那样完美,但我对使用正则表达式.*user=(\\d+)\\((.*)\\).*
并在输出中获取字符串数组的选项感到满意,其中第一个元素是第一个组,第二个是第二个。
您可以使用一堆Pattern和Matcher。解决方案不会在一行中,但从中可以清楚地看出您正在寻找该行中的某些内容,并且您没有进行替换:
正则表达式是为给定的示例字符串设计的。如果字符串实际上可以变化更多,那么您需要调整 reg。表达。
特别是,如果字符串可以包含登录后的字符(和右括号),那么您必须添加
.*
reg。表达式,或放弃.*
reg 的两端。表达式和matches方法支持find方法。