事先,我还没有学过正则表达式(虽然如果有人可以提供,我很乐意使用它)。
我有这样的字符串:
“zum Abschluss kommen(nachdrücklich; abgeschlossen werden)”。
我想要做的是将;
替换为:
,只要它出现在方括号()的某处。即:我希望我的字符串结束
“zum Abschluss kommen(nachdrücklich:abgeschlossen werden)”。
导致我麻烦的是,括号内可能有任意数量的文本,所以我通常的(笨拙的)字符串操作对我没有帮助。
额外的例子:
“alle Mann an Deck!(Seemannsspr。; ein Kommando)”
- >
“alle Mann an Deck!(Seemannsspr。:ein Kommando)”
我不能只替换()它,因为完整的字符串包含我想保留的;
。例如:
“das Deck reinigen,scheuern; auf Deck sein; unter,von Deck gehen; alle Mann an Deck!(Seemannsspr .; ein Kommando);”
有什么建议吗?
答案 0 :(得分:2)
由于括号/括号没有嵌套或不平衡的限制,请考虑使用positive look-behind的正则表达式。
这种背后隐藏确保左侧(
更接近比任何)
更近,因此我们必须在括号集内:
(?<=[(][^)]*);
使用中:
Regex.Replace(input, @"(?<=[(][^)]*);", ":");
如果初始约束无效,则此正则表达式将“无法预测”。
答案 1 :(得分:0)
也许有点啰嗦。
var a = "Your string";
// Get the bit within them
var bit = a.Substring(a.IndexOf("("), a.IndexOf(")"));
// Fix the bit
var replaced = bit.Replace(";", ":");
// Put the fixed bit back in the original string
var result = a.Replace(bit, replaced);