我需要插入正则表达式模式:
$@"^(?:[^\p{{L}}]|[{exclusion}])+$" //Цель: Запретить использование каких либо букв в строке, кроме тех что заданы в переменной - exclusion
字符串变量:
string exclusion;
其中所有控制字符都将被转义,这将避免与正则表达式的操作相关的错误。
我找到了一个方法Regex.Escape()。但这不适合我的需要。例如,如果一个值被exclusion = @"[text]"传递给一个方法Regex.Escape(),它将返回一个字符串"\\[text]"。将此行插入模式后,而不是排除变量:
$@"^(?:[^\p{{L}}]|[{exclusion}])+$" //Цель: запретить использование каких либо букв в строке, кроме тех что заданы в переменной - exclusion
它采用以下形式:
$@"^(?:[^\p{{L}}]|[\[text]])+$"
因此,正则表达式无法正常工作。我怀疑原因是一个额外的字符-]
你能告诉我如何转义字符串中的所有控制字符吗?除了 Regex.Escape() 方法还有其他方法吗?也许我以某种方式错误地使用它并且没有注意到我的错误?
Regex.Escape转义那些在字符类之外被认为是特殊的字符:事实上,只有以下字符在字符类中被视为特殊字符:
^- 可以表示角色类的独占类型,如果它位于打开后立即[]- 关闭角色类\- 转义特殊字符-- 指定字符范围或“字符类减法”要转义这些字符,使用
或者
解决方案:
或者(因为
[^\p{L}]=\P{L}):