我有一个xpath表达式,我想使用它从包含此类字符串的td中提取城市和日期:
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时,结果为“ on 2013/07/20”。
我认为这是因为第一个捕获组失败,所以组的数量不同。
如何使该表达式起作用?
最佳答案
我没有完全检查您的正则表达式,但是乍一看看起来还不错。无论如何,如果您只想通过在“ on”之后提取文本来获取日期,也可以采用一种更简单的方法:
//path/to/my/td/text()/substring-after(.,'on ')
编辑:或者您也可以选择子字符串,然后选择内容的最后10个字符:
//path/to/my/td/text()/substring(., string-length(.) - 9)
关于regex - 可变数量的捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17767707/