Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 是否有一个正则表达式来替换分隔列表中的数字?_Regex_List_Delimited Text - Fatal编程技术网

Regex 是否有一个正则表达式来替换分隔列表中的数字?

Regex 是否有一个正则表达式来替换分隔列表中的数字?,regex,list,delimited-text,Regex,List,Delimited Text,我有一个字符串,范围从空字符串到逗号分隔数字的任意列表。例如:“1,2,3” 不幸的是,当我编写代码删除一个元素时,我有一堆if语句——主要是处理它是列表中的第一个、最后一个还是唯一的元素。我一直在想一定有更好的办法 例如,我需要能够删除以下列表中的元素“2”: "1,2,3" "1,3,2" "2,1,3" "2" "12,2,21" "" 这应该满足您的要求: /(\b|,)2(\b|,)/ 拆卸(有关更换,请参见下文) 我找不到一个简单的表达式可以删除,因此似乎最好的方法是按顺序匹配每

我有一个字符串,范围从空字符串到逗号分隔数字的任意列表。例如:
“1,2,3”

不幸的是,当我编写代码删除一个元素时,我有一堆if语句——主要是处理它是列表中的第一个、最后一个还是唯一的元素。我一直在想一定有更好的办法

例如,我需要能够删除以下列表中的元素“
2
”:

"1,2,3"
"1,3,2"
"2,1,3"
"2"
"12,2,21"
""

这应该满足您的要求:

/(\b|,)2(\b|,)/
拆卸(有关更换,请参见下文)

我找不到一个简单的表达式可以删除,因此似乎最好的方法是按顺序匹配每个模式:

echo "x,x,1,x,2,x,x" | sed -e 's/,x,/,/g;  s/^x,//;  s/,x$//;  s/^x$//'
有点冗长,但可读性很强

更换

echo "x,x,1,x,2,x,x" | sed -e 's/,x,/,y,/g;  s/^x,/y,/;  s/,x$/,y/;  s/^x$/y/'

啊,我忘了\b。那正是我想要的,谢谢!如果2位于中间,这将删除逗号之前和逗号之后。示例:echo“1,2,3”| sed-e的/\(\b,\)2(\b,\)/”给你:“13”,但应该给你“1,3”