带有正则表达式的子字符串用于标记之间

时间:2014-05-29 02:29:05

标签: regex salesforce apex

我在下面的字符串中使用正则表达式。

但总是将匹配结果视为错误。

有什么建议吗?

我想在<tr> and </tr>.

之间对子值进行子串
Pattern myPattern = Pattern.compile('\\<tr>(.*?)\\</tr>');
Matcher m = myPattern.matcher(temp);
  while(m.find())
   {
.. do things
}

<tr><td>111</td><td>111@test.com</td></tr><tr><td>222</td><td>222@test.com</td></tr></table>

即使我改为Pattern myPattern = Pattern.compile('<tr>(\\w+)</tr>');,也无法获得真实的结果。

而且这个还没有工作<tr>(.*?)</tr>。我查看http://regexr.com/,但似乎没问题。但是,当我运行代码时,无法正常工作。

2 个答案:

答案 0 :(得分:1)

我没有使用您正在测试的环境,但由于您必须使用正则表达式,我看到一个可能的问题:.可以匹配除行分隔符之外的任何字符,因此它不匹配

<tr>
   <td>..</td>
</tr>

要使其正常工作,您可以使用DOTALL标志,请尝试

Pattern myPattern = Pattern.compile("<tr>(.*?)</tr>",Pattern.DOTALL);

答案 1 :(得分:0)

尝试Pattern myPattern = Pattern.compile("<tr>(.*?)</tr>");

可运行代码:https://ideone.com/sm0WWg