我的文字如下:
executeRule(document, 'SendEmail', [
'emailAddress':'EMAIL(john@yahoo.com)',
'subject':'Test',
'text':'Test',
'defaultText':'Test']
);
我需要用regexp解析它以获取executeRule的参数。
目前我的regexp看起来像这样(java):
List<String> partialRules = new ArrayList<String>();
List<String> rules = new ArrayList<String>();
Pattern p = Pattern.compile("executeRule\\(\\s*\\w+,\\s*'(\\w+)'\\s*,\\.*");
问题是我找不到与executeRule方法的第3个参数匹配的正则表达式。
感谢任何帮助。
谢谢。
答案 0 :(得分:5)
您是否考虑过不使用一个正则表达式来完成上述所有操作,而是编写一个简单的解析器来分割逗号,然后委托另一个解析器来解析每个冒号分隔的对?构造/调试可能更容易(当然,取决于您是否允许在每个文本字符串中使用逗号)。
如果您选择扩展上面的语法,那么这可能比一个(可能相当大的)正则表达式更具可扩展性。
答案 1 :(得分:1)
Pattern p = Pattern.compile("(?s)executeRule\\(\\s*?(.+?),\\s*?('.+?'),\\s*(\\[.+?\\])");
如果我理解你想要什么。每个参数都将保存在Matcher的组(i)中。