正则表达式替换特定字符串

时间:2011-10-25 05:10:40

标签: c# regex

我有一个以下格式的字符串:

tablename.colname > [[2 | prompt and text]] and tabname.colname < [[1000| prompt
 or text]]

我需要将'[[]]'中的文本替换为管道符号前面的值。现在,

i)我正在用逻辑运算符(例如AND和OR)拆分字符串(注意:这也会在方括号内拆分'和',我真的不想要。)

ii)然后用数学运算符得到字符串。

任何人都可以帮忙找到一个正则表达式来查找双方括号之间的文本,并用管符号前面的值替换它......

管道前的值可以是整数或字符串。

2 个答案:

答案 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]

Check it here

简要说明

\[\[                 - 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 ]]