可变数量的捕获组

时间:2013-07-20 23:33:50

标签: regex xpath

我有一个xpath表达式,我想用它从包含这种字符串的td中提取City和date:

City(may contain spaces and may be missing, but the following space is always present) on 2013/07/20

到目前为止,我已经采用以下解决方案来提取日期,这部分有效:

//path/to/my/td/text()/replace(.,'(.*) on (.*)','$3')

当City出现时,这是有效的,但当City缺失时,我得到“在2013/07/20”。 我认为这是因为第一个捕获组失败,因此组的数量不同。 我怎样才能使这个表达起作用?

1 个答案:

答案 0 :(得分:0)

我没有完全检查你的正则表达式,但它看起来很好看。无论如何,如果您只想通过在“开启”之后提取文本来获取日期,您也可以采用更简单的方式:

//path/to/my/td/text()/substring-after(.,'on ')

编辑:或者您可以使用子字符串方式并选择内容的最后10个字符:

//path/to/my/td/text()/substring(., string-length(.) - 9)