我对正则表达式有点新意。我正在寻找一个正则表达式,将其添加为约束,不允许在字符串外使用逗号。
我的输入就像
"1,212121,121212","Extra_data"
此处正则表达式不应检查引号"1,212121,121212"
中第一个值中的逗号,但应在包括,"Extra_data"
的引号后检查。简而言之,表达式应该只允许字符串中的逗号只在引号内而不是在外部。
请帮助我表达。
答案 0 :(得分:0)
试试这个
".*?(?=,).*?"
它只在引号
中的字符串中提取逗号答案 1 :(得分:0)
尝试以下正则表达式:
"[^"]*"(,)[^"]*"[^"]*"
它将捕获您需要的逗号。但请注意,PHP不支持相同组的捕获。即在你的情况下: 如果输入为:“1,212121,121212”,“Extra_data”,“hel,lo”,“a,bc” 它会在“Extra_data”和“a,bc”之前捕获逗号,但会在“hel,lo”之前排除逗号。为此你必须使用递归。
答案 2 :(得分:0)
您可以尝试使用此正则表达式。
(^,)|("\s*,\s*")|(,$)
如果您发现此正则表达式匹配,则该字符串将无效。
答案 3 :(得分:0)
我认为这就是你要找的东西,本质上是一组用括号括起来的数字或逗号,然后用逗号括起来,另外一个短语(不一定是数字)括在括号中。捕获组#1为您提供“1,212121,121212”,捕获组#2为您提供“Extra_data”
("[\d,]+")(,"[^"]+")
更多地了解您的输入可能会有所帮助。我认为剩下的最大问题是第一组是否始终只包含数字/逗号,或者是否有其他字符如字母,下划线,在第一组?如果第一组只包含数字,正如我所假设的那样,那么这应该有效。如果没有,那么这将不起作用。
编辑:
"\s*(,\s*"[^"]+")