R 仅用于替换方括号内逗号的正则表达式
我有一个文本文件,它包含逗号分隔的字符串。但是一些用逗号分隔的字符串的格式是R 仅用于替换方括号内逗号的正则表达式,r,regex,pcre,R,Regex,Pcre,我有一个文本文件,它包含逗号分隔的字符串。但是一些用逗号分隔的字符串的格式是[*,*,*,…]。例如: “你好”、“再见”、“是”、“不是”、“可能”、“确实”、“为什么”、“什么”] 我希望能够解析该文件,仅用分号替换方括号内的逗号。方括号内可以有任意数量的方括号,方括号内可以有任意数量的逗号 我尝试在R中使用此代码,但它没有按计划工作,我的括号外的一些逗号正在被替换: 重复{ tmp要用分号替换方括号内的所有逗号,可以使用 gsub("(?:\\G(?!^)|\\[)[^][,]*\\K,"
[*,*,*,…]
。例如:
“你好”、“再见”、“是”、“不是”、“可能”、“确实”、“为什么”、“什么”]
我希望能够解析该文件,仅用分号替换方括号内的逗号。方括号内可以有任意数量的方括号,方括号内可以有任意数量的逗号
我尝试在R中使用此代码,但它没有按计划工作,我的括号外的一些逗号正在被替换:
重复{
tmp要用分号替换方括号内的所有逗号,可以使用
gsub("(?:\\G(?!^)|\\[)[^][,]*\\K,", ";", x, perl=TRUE)
请参阅。上面的正则表达式不检查是否有关闭]
。如果需要,请使用
gsub("(?:\\G(?!^)|\\[)[^][,]*\\K,(?=[^][]*])", ";", x, perl=TRUE)
看
详细信息
(?:\G(?)\[)
-上一次匹配的结束(\G(?)
)或(
)a[
(\[
)
[^][,]*
-0+字符,而不是[
和]
和a]
\K
-匹配重置运算符,该运算符将丢弃迄今为止匹配的所有文本
,
-逗号
(?=[^][]*])
-正向前瞻,需要0+个字符,而不是当前位置右侧的[
和]
,以及一个]
要用分号替换方括号内的所有逗号,您可以使用
gsub("(?:\\G(?!^)|\\[)[^][,]*\\K,", ";", x, perl=TRUE)
请参阅。上面的正则表达式不检查是否有关闭]
。如果需要,请使用
gsub("(?:\\G(?!^)|\\[)[^][,]*\\K,(?=[^][]*])", ";", x, perl=TRUE)
看
详细信息
(?:\G(?)\[)
-上一次匹配的结束(\G(?)
)或(
)a[
(\[
)
[^][,]*
-0+字符,而不是[
和]
和a]
\K
-匹配重置运算符,该运算符将丢弃迄今为止匹配的所有文本
,
-逗号
(?=[^][]*])
-正向前瞻,需要0+个字符,而不是当前位置右侧的[
和]
,以及一个]
这是一个字符串吗这是一个字符串吗谢谢你-这工作得很好-作为一个快速的跟进,我还想知道如果我处理的是花括号({})而不是正方形([]),正则表达式字符串会有什么变化。Keith将每个文本[
替换为{
和]
替换为}
,”(?:\\G(?!^)\\{[^{},]*\\K,(?=[^{}]*})
@Keith好吧,这与()
。您需要避开这两种情况。是的,非常感谢!而且我不认为在原始解决方案中这是一个直接的“类似”替换-我一直在玩,并得出了圆括号的答案谢谢-这非常有效-作为一个快速的跟进,我还想知道如果我正在处理正则表达式字符串,会有什么变化用花括号({})代替方括号([])@Keith用{
替换每个文本[
,,“(?:\\G(?)|\\{)[^{},]*\\K,(?=[^{}]*})”
@Keith嗯,这与不同()
。您需要同时避开这两种情况。是的,非常感谢!而且我认为在原始解决方案中,这不是一种直接的“相似”替代方案—我们在这里讨论了一下,得出了圆括号的答案