regex - 可变数量的捕获组

标签 regex xpath

我有一个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/

相关文章:

Javascript Regex忽略匹配中的第一个字符

python - 在 Python 中,如果单词以非字母数字字符开头,如何匹配它?

javascript regexp:匹配::之后的所有内容,但不匹配 >

正则表达式在月份名称或缩写之前查找空格

xml - 使用 XPath 在 WIX 中删除带有 XmlConfig 扩展名的 XML 元素

xml - 尝试使用 XDT 和 XPath 定位器替换 XML 元素元素

javascript - 使用正则表达式测试 IP 地址

java - 在 Java 中使用 XPath 和命名空间解析 XML

python - XPath 查找所有只有数字的链接?

python - 如何在抓取网站时到达最后一页后停止 selenium webdriver?