【问题标题】:How to match values in double quotes?如何匹配双引号中的值?
【发布时间】:2013-11-26 14:31:30
【问题描述】:

我想屏蔽敏感的信用卡详细信息。因此尝试创建匹配器,发现:

  • 有信用卡标签
  • 同一行有一个数字字段
  • 同一行有一个 CVC 字段

然后我想替换找到的数字/值。 到目前为止,我有:(CreditCard.*CVC=").*?"。这将匹配字符串CreditCard Number="123456789" CVC="111"

我必须进行哪些更改才能仅匹配 CVC 或 Number 双引号中的数字?

【问题讨论】:

  • 尝试 XPath 而不是正则表达式。
  • 您使用什么语言?使用 XML 解析器可能会更好
  • Java,但放置 XML 的字符串不仅包含 xml,还包含许多其他数据。所以我不能使用解析器...
  • 这些属性总是按这个顺序排列吗?或者 CVC 会发生在 Number 之前吗?

标签: java xml regex


【解决方案1】:

Lookahead 和 Lookbehind 是神奇的词。这是一个匹配您的 CVC 编号的示例...

(?<=CVC=\")\d+(?=\")

【讨论】:

  • 但是,这并不能确保我们在匹配 CVC 时位于 CreditCard 标记内。
  • 是的,这是一个示例,但易于扩展。我认为他的主要问题是理解如何忽略双引号。
  • 但不容易扩展。 Java 不支持在lookbehind 中使用*+
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多