给java正则表达式输入

时间:2013-10-21 13:32:14

标签: java regex

我有一个如下所示的正则表达式:

"\\t'AUR +(username) .*? /ROLE=\"(my_role)\".*$"

用户名 my_role 部分将从args中提供。所以它们总是在脚本启动时改变。那么我如何为正则表达式的那部分提供参数呢?

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

像这样定义正则表达式:

String fmt = "\\t'AUR +(%s) .*? /ROLE=\"(%s)\".*$";

// assuming userName and myRole are your arguments
String regex = String.format(fmt, userName, myRole);

答案 1 :(得分:1)

您应该使用Pattern.quote转义动态字符串中的特殊字符。要将正则表达式部分放在一起,您可以简单地使用字符串连接:

String quotedUsername = Pattern.quote(username);
String quotedRole = Pattern.quote(my_role);
String regexString = "\\t'AUR +(" + quotedUsername + 
                     ") .*? /ROLE=\"(" + quotedRole + ")\".*$";

我认为在使用String.format时将正则表达式与格式字符串混合可能会使正则表达式更难理解。

答案 2 :(得分:0)

使用字符串格式或直接字符串连接来构造正则表达式,然后再将其传递给编译...

答案 3 :(得分:0)

试试这个例子:

String patternString = "\\t'AUR +(%s) .*? /ROLE=\"(%s)\".*$";
String formatted = String.format(patternString, username,my_role);
System.out.println(formatted);
Pattern pattern = Pattern.compile(patternString);

您可以在此处运行一个有效的示例:http://ideone.com/93YeNg