C# 正则表达式从字符串中删除重复的文本模式
我正在尝试使用正则表达式删除重复的模式或文本。输入文本为: 规则集:[text],数据:[{text}{text}…]规则集:[text],数据:[{text},{text},…]SomeText规则集:[{text}…],数据:[{text}…] 其中,子字符串可以是任何字母数字单词,并且可以包含特殊字符以及空格。我正在尝试删除以下任何内容:C# 正则表达式从字符串中删除重复的文本模式,c#,regex,C#,Regex,我正在尝试使用正则表达式删除重复的模式或文本。输入文本为: 规则集:[text],数据:[{text}{text}…]规则集:[text],数据:[{text},{text},…]SomeText规则集:[{text}…],数据:[{text}…] 其中,子字符串可以是任何字母数字单词,并且可以包含特殊字符以及空格。我正在尝试删除以下任何内容: 规则集:[文本], 数据:[{text}{text}…] 我想保留以下SomeText 我尝试了很多方法,但似乎没有达到预期的效果。Descript
规则集:[文本],
数据:[{text}{text}…]
SomeText
我尝试了很多方法,但似乎没有达到预期的效果。Description
替换为:
无
此正则表达式将执行以下操作:
- 查找类似于
或规则集:[text]、
数据:[{text}{text}…]的子字符串。
- 允许您用任何内容替换这些内容,或者在本例中不替换任何内容
你已经试过什么了?你说的“特殊角色”到底是什么意思?下面是stackoverflow问题的回答。准备好测试模式,只需删除带有“(规则集\:[.])模式的任何内容。但是当它匹配结尾“]”时,它会删除所有内容。特殊字符是()|你能给出一个输入和预期输出的例子吗?谢谢@Ro-Yo-Mi,它确实对我有用,而且响应时间也更好。我使用“RuleSet\:[(\s*?*?*?*?]),\s | Data\:[(\s*?*?*?*?])得到了预期的结果。我不喜欢在使用括号、括号或引号等包装字符的值时使用
*?
断言,因为这会导致意外的结果。但如果它对你有用,那就太棒了。
\s?(?:RuleSet|Data):\[[^]]*](?:,?\s|$)
NODE EXPLANATION
----------------------------------------------------------------------
\s? whitespace (\n, \r, \t, \f, and " ")
(optional (matching the most amount
possible))
----------------------------------------------------------------------
(?: group, but do not capture:
----------------------------------------------------------------------
RuleSet 'RuleSet'
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
Data 'Data'
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
: ':'
----------------------------------------------------------------------
\[ '['
----------------------------------------------------------------------
[^]]* any character except: ']' (0 or more times
(matching the most amount possible))
----------------------------------------------------------------------
] ']'
----------------------------------------------------------------------
(?: group, but do not capture:
----------------------------------------------------------------------
,? ',' (optional (matching the most amount
possible))
----------------------------------------------------------------------
\s whitespace (\n, \r, \t, \f, and " ")
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
$ before an optional \n, and the end of a
"line"
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------