【问题标题】:Java Regex - exclude empty tags from xmlJava Regex - 从 xml 中排除空标签
【发布时间】:2011-04-16 20:59:49
【问题描述】:

假设我有两个 xml 字符串:

String logToSearch = "123456789012"

String logToSearch2 = ""

String logToSearch3 = "";

如果标签包含值,我需要一个模式来查找数字标签,即匹配项只能在 logToSearch 中找到。

我并不是说我在寻找数字本身,而是 matcher.find 方法应该只对第一个字符串返回 true。

现在我有这个: 模式 pattern = Pattern.compile("", Pattern.CASE_INSENSITIVE); 其中 patternString 只是“数字”。我尝试添加 "].*?> 但它不起作用,因为在 [^/>] 中每个字符都是单独处理的。

谢谢

【问题讨论】:

  • XML、HTML 或解析器是更好的解决方案的任何东西都击败了正则表达式。

标签: java regex


【解决方案1】:

所以搜索"<number[^/>]*>" 会找到开始标签。如果您想确定它不为空,请尝试"<number[^/>]*>[^<]""<number[^/>]*>[0-9]"

【讨论】:

  • 投票需要 15 个我没有的声望,但我接受了你的回答。再次感谢。
  • 好吧,现在你离我们更近了一点。
【解决方案2】:

这绝对是解析 XML 的错误方法。事实上,如果您需要的不仅仅是这里给出的基本示例,那么显然无法使用正则表达式解决更复杂的情况。

使用简单的 XML 解析器,例如 XOM。现在,使用 xpath 查询元素并过滤没有数据的元素。我只能想象这个问题是未来头痛的前兆,除非你现在修改你的方法。

【讨论】:

  • 别担心,我不是要解析 xml 文件,我只需要从我的日志文件中删除 cc 编号。为此,我需要搜索存储号码的标签。我无法搜索数字本身,因为日志文件中还有其他重要数字可能看起来像卡号(例如会话 ID)。
猜你喜欢
  • 2013-03-24
  • 2016-07-31
  • 1970-01-01
  • 2014-07-26
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
相关资源
最近更新 更多