R中的正则表达式用于检测45美元

时间:2017-04-06 00:45:14

标签: r regex

以下是我的文字样本:

text1:“工资是34-36美元” text2:“薪水是34.50- $ 36.20” text3:“工资是45000-34000美元” text4:“工资是45-34000美元”

因此,每当我找到$ 34- $ 36或$ 34.50- $ 36.20这样的模式时,我需要在文本中添加单词小时,每当我找到$ 45000- $ 34000或$ 45- $ 34K这样的模式时,我需要在文本中添加单词工资。

有人可以帮我解决使用正则表达式在R中解决这个问题吗?

感谢-你。

1 个答案:

答案 0 :(得分:0)

对于一种情况,它可能适用于否定前瞻正则表达式:

# 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)

我用很少的片段测试了这个。也许你的测试用例比我的更复杂。