我有一个以下格式的字符串:
tablename.colname > [[2 | prompt and text]] and tabname.colname < [[1000| prompt
or text]]
我需要将'[[]]'
中的文本替换为管道符号前面的值。现在,
i)我正在用逻辑运算符(例如AND和OR)拆分字符串(注意:这也会在方括号内拆分'和',我真的不想要。)
ii)然后用数学运算符得到字符串。
任何人都可以帮忙找到一个正则表达式来查找双方括号之间的文本,并用管符号前面的值替换它......
管道前的值可以是整数或字符串。
答案 0 :(得分:4)
这样的事情应该有效
resultString = Regex.Replace(subjectString, @"(\[\[)(.*?)\|(.*?)(\]\])", "$1$2$4", RegexOptions.Multiline);
输入:[[2 | prompt and text]] and tabname.colname < [[1000| prompt or text]]
输出:[[2 ]] and tabname.colname < [[1000]]
答案 1 :(得分:2)
搜索
\[\[([a-zA-Z0-9]+) ?\|.*?\]\]
替换为
[$ 1]
简要说明
\[\[ - The starting [[
([a-zA-Z0-9]+) - Match any number of letters and digits (made a capturing group)
? - An optional space
\| - Pipe symbol
.*? - Match anything without been greedy
\]\] - Closing ]]