Regex 用正则表达式查找并替换字符串
这可能是一个新的正则表达式问题(仍在学习),但我正在尝试取消代码中所有对象的资本化(但不是类);i、 对于代码段,请执行以下操作:Regex 用正则表达式查找并替换字符串,regex,linux,unix,sed,Regex,Linux,Unix,Sed,这可能是一个新的正则表达式问题(仍在学习),但我正在尝试取消代码中所有对象的资本化(但不是类);i、 对于代码段,请执行以下操作: Bishop_Piece Bishop; Bishop.move()... 我希望它是: Bishop_Piece bishop; bishop.move()... 我尝试的是: find . -type f | xargs sed -i 's/Bishop[;.]/bishop./g' 然而,这导致: Bishop_Piece bishop. bis
Bishop_Piece Bishop;
Bishop.move()...
我希望它是:
Bishop_Piece bishop;
bishop.move()...
我尝试的是:
find . -type f | xargs sed -i 's/Bishop[;.]/bishop./g'
然而,这导致:
Bishop_Piece bishop.
bishop.move()...
基本上,我希望在我正在搜索的内容(即Bishop)之后的字符被“保留”(无论是;
还是
),这就是解释Bishop./g
的原因
find . -type f | xargs sed -i 's/Bishop\([;.]\)/bishop\1/g'
请注意,\([;.]\)
此处定义了一个捕获组,其值由替换模式中的\1
引用
(…)
括号将被转义,因为这是符合POSIX BRE的正则表达式
见:
s='Bishop\u件Bishop;
毕肖普,移动()
sed的/Bishop\([;.]\)/Bishop\1/g使用sed时,您可以将[;.]
与捕获组匹配,并在找到输出的同一位置返回匹配的内容。这很有效。我知道解决方案是\1
部分。谢谢(以及更改查找的\([;.]\)
)
Bishop_Piece bishop;
bishop.move()...