在 C# 中使用一些正则表达式时,我遇到了以下问题:
考虑这个简单的字符串:~0~这是一个简单的文本~POP~NIZ~0~0~
我想选择两个“~”之间的任何字符串,其中包含超过 3 个字符,当然“~”除外。在我的示例中,将是:
这是一个简单的文本
我可以做类似的东西:([\w]|[\d]|.|\,.................){4-500}
我会以一个非常长的正则表达式结束,无法调试且不可读...
相反,我更愿意创建一个正则表达式,例如 “给我任何字符,但包含在‘~’和‘~’之间的‘~’除外”。
我找不到正确使用 [^] 的方法!
我该怎么做?
提前致谢!
回答:我终于做到了:~[^~]{3,}~
它包含除“~”之外的所有内容,包含在两个“~”之间并且长度超过三个字符。
感谢您的回答!
最佳答案
如果您不介意从开始到结束可能有额外的批处理,它应该很简单:
[^~]{3,}
或者,您可以拆分并取长的:
var tokens = str.Split('~').Where(s => s.Length >= 3);
如果你确实想将字符限制在一个特定的集合中,你可以使用先行和后行来确保。这不会消耗波浪号,所以你会得到两个 ~123~abc~
的匹配项(同样,你可以使用 [^~]
如果你对它感到满意):
(?<=~)[\w\d\s]{3,}(?=~)
关于c# - 正则表达式 - 避免字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4332807/