如果我有string
这样的话:
MyObject[0]
我想使用RegEx
在`[
()
所以我最终会:
MyObject()[0]
我使用String.Replace
但如果已经有()
,则可能会导致问题。
.Replace("[", "()[")
示例:
MyObject()[0].Items[0]
最终
MyObject()()[0].Items()[0]
希望使用正则表达式来避免重复。
Regex.Replace(s, @"[A-Za-z]\[", "()[");
这里的问题是它取代了前面的字符:
MyObjec()[0]
建议?
答案 0 :(得分:1)
使用替换中A-Z
块周围的分组来恢复您的t
:
Regex.Replace(s, @"([A-Za-z])\[", "$1()[");
来自LinqPad的测试:
Regex.Replace("MyObject[0]", @"([A-Za-z])\[", "$1()[")
输出:
MyObject()[0]
答案 1 :(得分:1)
只需查找单词字符后跟[并且仅在该情况下替换(如果单词字符后跟(。
)例如:
Regex.Replace(
input,
//find expression
@"(\w+)(\[)",
//replacement expression
@"$1()$2")