如何使用正则表达式在两行之间提取相关文本

How to extract relevant text between two lines using regex

Berat: 0.25kg
Rp 115.000
Jumlah:
Beli
Ke Dafta

在这里我想提取 Rp 115.00 并注意重量 0.25 kg 是可变的

我正在尝试

\b.*\n\K.*(?=\n*\n)

但它给了我 "Rp 115.00" 和 "Jumlah:" 文本中有多个 Rp 条目,例如 Rp 10 和 Rp 400,但我只想提取 "Berat" 和 "Jumlah" 之间的条目。这些数字也是可变的 PS- 我正在寻找使用正则表达式的解决方案

假设

I only want to extract Rp 115.000

您可以使用带有 (?s).*(Rp\s+\d+\.\d+).* 正则表达式的 gsub 从文本中提取它:

gsub("(?s).*(Rp\s+\d+\.\d+).*", "\1", s, perl=T)
##[1] "Rp 115.000"

demo

.* 将匹配任何符号(甚至是由于 (?s) 修饰符导致的换行符)并且 Rp\s+\d+\.\d+ 将匹配模式 Rp + 空白 + 数字 + . + 数字.