0

I have a regex like below one :

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

username and my_role parts will be given from args. So they always change when the script is starting. So how can i give parameters to that part of regex ?

Thanks for your helps.

4

4 回答 4

1

像这样定义正则表达式:

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

// assuming userName and myRole are your arguments
String regex = String.format(fmt, userName, myRole);
于 2013-10-21T13:40:24.597 回答
1

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

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

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

于 2013-10-21T13:41:08.003 回答
0

在将正则表达式传递给编译之前,使用字符串格式或直接字符串 concat 构造正则表达式...

于 2013-10-21T13:35:17.487 回答
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

于 2013-10-21T13:44:58.490 回答