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”