这是一个基本问题,因为我对RegEx不太熟悉,但是我无法在线找到答案(可能我不知道要用Google做什么)。
我想编写一个查找所有逗号的函数:
我发现这两个实例的正则表达式是
(?!\\])(\\,)(?!\\s\\[)
和
(\\,)(?!\\+)
(如果我错了,请纠正我)
但是如何将两者仅用一个命令放在一起,以便我的函数识别出满足这两个条件的所有逗号?我的头有些困难,因为这是两个负面条件。 如果有什么不同,我正在使用R。
谢谢!
答案 0 :(得分:1)
您可以将PCRE regex与基本R regex函数一起使用:
][^[]*\[(*SKIP)(*F)|,(?!\+)
请参见regex demo。
详细信息
][^[]*\[(*SKIP)(*F)
-匹配并跳过]
,然后选择0+个除[
以外的字符,然后选择[
(即 not between a "]" and a " ["
规则)|
-或匹配,(?!\+)
-逗号后没有立即出现文字+
的逗号x <- "[abc], [def] abc,+def abc,def"
reg <- "][^[]*\\[(*SKIP)(*F)|,(?!\\+)"
strsplit(x, reg, perl=TRUE)
## [[1]]
## [1] "[abc], [def] abc,+def abc" "def"
gsub(reg, "@", x, perl=TRUE)
## [1] "[abc], [def] abc,+def abc@def"
答案 1 :(得分:0)
所以您要使用逗号:
第二秒,您可以使用负前瞻((?!)
)。对于第一个,您需要它的反面,即反面((?<!)
)。
这应该做到:
,(?<!\])(?!\+|\[)