可能是简单的东西,但我不太使用正则表达式。输入:c1 = 7634, c2 = a,b, c3 = 8gd_, c4 = e,78所需输出:
c1 = 7634, c2 = a,b, c3 = 8gd_, c4 = e,78
c1 = 7634 c2 = a,b c3 = 8gd_ c4 = e,78
字符串复杂度(对我来说)-我不知道如何定义它,所以对于c2,它需要a,B和逗号。我现在有:
(\w+)\s*=\s*((?:[^,].*?[^,])?)
型跟在B后面谢谢提前!
v440hwme1#
您可以使用
(\w+)\s*=\s*(.*?)(?=\s*,\s*\w+\s*=|$)
字符串参见regex demo
(\w+)
\s*=\s*
=
(.*?)
(?=\s*,\s*\w+\s*=|$)
在$之前添加\s*,如果可以有尾随空格。
$
\s*
w8rqjzmb2#
您可以使用此正则表达式搜索2个捕获组:
(\w+)\h*=\h*(.*?)(?=\h*,\h*\w+\h*=|$)
字符串RegEx Demo
RegEx详情:
\h*=\h*
(?=\h*,\h*\w+\h*=)
如果你的键名允许非单词字符,如连字符,$,#等,那么使用这个正则表达式:
#
([^=,\h]+)\h*=\h*(.*?)(?=\h*,\h*[^=,\h]+\h*=|$)
型
2条答案
按热度按时间v440hwme1#
您可以使用
字符串
参见regex demo
(\w+)
-第1组:一个或多个单词字符\s*=\s*
-=
符号,包含零个或多个空格(.*?)
-第2组:除尽可能少的换行符字符之外的任何零个或多个字符(?=\s*,\s*\w+\s*=|$)
-在可选空格内紧跟逗号+一个或多个单词字符,零个或多个空格,以及=
符号或字符串结束。在
$
之前添加\s*
,如果可以有尾随空格。w8rqjzmb2#
您可以使用此正则表达式搜索2个捕获组:
字符串
RegEx Demo
RegEx详情:
(\w+)
:匹配捕获组#1中的1个以上单词字符-\h*=\h*
:匹配=
,两侧用0个或多个空格包围(.*?)
:匹配捕获组#2中的0个或多个字符(?=\h*,\h*\w+\h*=)
:正向前看:Assert我们在当前位置前面有逗号,逗号由0个或多个空格包围,然后是1+单词字符,后面是0个或多个空格和=
如果你的键名允许非单词字符,如连字符,
$
,#
等,那么使用这个正则表达式:型