我正在尝试编写一个基于规则的逻辑来从文本中提取信息。我需要将每个提取的字符串分配给每个特定案例。但是,我被困在负向前瞻用例中。我需要找到一个单词“cash”,后跟“rp”或“idr”,然后是数字,这些数字可以包含“。”、”或数字中的任何空格,但不能跟独立的“juta|jt|m”。
这是我迄今为止的工作:
cash\s*[\:,.-]?\s*(rp|idr)[\.,]?\s*([\d\s,.]+)(?!juta|jt|m)\b
这些是测试用例:
harga cash: rp 130jt (nego alu
harga cash: rp 230juta (nego alu
harga cash: rp 330 juta (nego alu
harga cash: rp 430,000,000 juta (nego alu
harga cash: rp 530m (nego alu
harga cash: rp 630 (nego alu
harga cash: rp 730000000 (nego alu
harga cash: rp 830,000,000 (nego alu
harga cash: rp 930 000 000 (nego alu
正则表达式错误地匹配了所有这些行,而它应该只匹配最后四行并产生:
cash: rp 630
cash: rp 730000000
cash: rp 830,000,000
cash: rp 930 000 000
juta
因此,数字后面带有、jt
和的所有字符串m
都不应匹配。有人能指出我哪里做错了吗?