在给定一组定界符(例如;
和)的情况下,
,我将如何处理正则表达式,我可以在这些示例中获得以下结果:
coffee, water; tea -> [coffee, water, tea]
"coffee, black;", water; tea -> ["coffee, black;", water, tea]
为了澄清,常规文本不能有空格,带引号的文本可以有空格,引号内的定界符将被忽略,所有文本都由定界符分隔。
我自己一直在进行正则表达式的实验,但是没有得到想要的结果。我还在没有先行/后顾之忧的环境中工作。关于如何实现这一点的任何想法?
这是个好方法 (?:\r?\n|[,;]|^)[^\S\r\n]*((?:(?:[^\S\r\n]*[^,;"\s])*(?:"[^"]*")?[^,;"\s]*))[^\S\r\n]*
添加了一些WSp修剪。
不错的演示在这里-> https://regex101.com/r/FsJtOE/1
捕获组1包含该元素。
一个简单的发现所有应该工作。
注意,使用Re2没有断言,但是要处理所有角落
,确实需要它们。
不幸的是,这与您使用该正则表达式引擎的距离非常近。
这将做的一件事是允许在非引用字段中使用多个单词。
可读版本
# Validate even quotes: ^[^"]*(?:"[^"]*"[^"]*)*$
# Then ->
# ----------------------------------------------
# Find all:
(?: \r? \n | [,;] | ^ )
[^\S\r\n]*
( # (1 start)
(?:
(?:
[^\S\r\n]*
[^,;"\s]
)*
(?: " [^"]* " )?
[^,;"\s]*
)
) # (1 end)
[^\S\r\n]*
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句