regex R中用于检测$45的正则表达式

vulvrdjw  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(87)

以下是我的文本示例:
text 1:“工资是34 - 36美元”text 2:“工资为$34.50-$36.20”text 3:“工资是$45000-$34000”text 4:“工资是$45-$34K”
因此,每当我发现像$34-$36或$34.50-$36.20这样的模式时,我需要在文本中添加word hour,每当我发现像$45000-$34000或$45-$34K这样的模式时,我需要在文本中添加word salary。
有人能帮助我如何在R中使用正则表达式解决这个问题吗?
谢谢

9njqaruj

9njqaruj1#

在一种情况下,它可以使用 negative lookahead 正则表达式:

# add 'hour' for 2-digit $-values (with optional decimal fraction)
# but only if NOT followed by 000 or K
gsub("(\\$\\d{1,2}(?:\\.[\\d]+)?(?!000|K))", "\\1 hour", txt, perl=TRUE)

第二种情况:

# add 'salary' for 4-5-digit $-values (with optional decimal fraction)
# but only if followed by 000 or K
gsub("(\\$\\d{1,2}(000|K))", "\\1 salary", txt, perl=TRUE)

我只用几个片段测试过这个。也许你的测试用例比我的复杂。

相关问题