在.NET Regex
模式中,需要转义哪些特殊字符以便从字面上使用?需要在.NET Regex中转义哪些字符?
24
A
回答
34
我不知道完整的字符集 - 但我不会依靠知识,无论如何,我不会把它放到代码。相反,我会用Regex.Escape
,每当我想要一些文字文本,我是不知道:
// Don't actually do this to check containment... it's just a little example.
public bool RegexContains(string haystack, string needle)
{
Regex regex = new Regex("^.*" + Regex.Escape(needle) + ".*$");
return regex.IsMatch(haystack);
}
8
请参阅MSDN文档在这里:http://msdn.microsoft.com/en-us/library/az24scfc.aspx#character_escapes
一个完整列表的问题是,它依赖于上下文。例如.
必须转义,除非它包含在括号中,如[.]
。 ]
技术上不需要转义,除非它前面有[
。 -
没有特殊含义,除非它在括号内,如[A-Z]
。 =
没有特别的含义,除非在(?=)
之前有?
。
11
我认为你可以得到字符的列表,
List<char> chars = Enumerable.Range(0,65535)
.Where(i=>((char)i).ToString()!=Regex.Escape(((char)i).ToString()))
.Select(i=>(char)i)
.ToList();
-
\t\n\f\r#$()*+.?[\^{|
17
以下是需要转义以将其用作普通文字的字符列表:
- 开放方括号
[
- 反斜杠
\
- 插入符
^
- 美元符号
$
- 时期或点
.
- 竖线或管道符号
|
- 问号
?
- 星号或明星
*
- 加号
+
- 首轮支架
(
,截止轮托架)
- 左大括号
{
- 英镑/井号
#
这些特殊字符通常被称为 “元字符” 。
但是,我与Jon同意使用Regex.Escape
代替代码硬编码这些字符。
+5
我认为你需要在列表中包括'{'。 – H2ONaCl
+0
并包括''' –
相关问题
- 1. 我需要在此SQL命令中转义哪些字符?
- 2. 在PHP中回显Javascript时需要转义哪些字符?
- 3. 需要将哪些字符转义为字符串?
- 4. 哪些字符需要在HTML上转义?
- 5. 正则表达式出错了 - 哪些字符需要转义?
- 6. 某个tinyxml能解释哪些字符需要转义?
- 7. 在我的JSON数组中返回HTML时,需要转义哪些字符?
- 8. 如何知道我需要在正则表达式中转义哪些字符?
- 9. 某些字符是否需要在vim中被转义搜索?
- 10. 不需要转义字符
- 11. 需要转义字符串中的双字符或某些特殊字符
- 12. cgi/perl/html - 打印到html时要转义哪些字符?
- 13. .NET转义字符?
- 14. 魔精:: DOM:做一些字符需要特殊的转义?
- 15. 当我需要转义Html字符串?
- 16. 需要转义多少个字符?
- 17. 什么字符需要转义JSON.parse
- 18. 在.NET中转义MySQL字符
- 19. 我需要转义这个MATLAB字符串中的字符吗?
- 20. VBScript中需要转义字符的字符列表
- 21. 在创建XML时需要处理哪些特殊字符?
- 22. 如何在java中拆分这个字符串需要regex?
- 23. 我应该在T-SQL字符串中转义哪些特殊字符?
- 24. RegEx我需要把数字放在字符串的末尾?
- 25. 在asp.net 5中,我需要哪些包?
- 26. Google Checkout需要哪些字段?
- 27. 我需要索引哪些字段?
- 28. 需要在linux shell命令中转义的字符列表
- 29. 为什么我需要在JavaScript中转义'/'字符?
- 30. 我需要在SQL查询中转义什么字符
逃生$性格太?:'VAR针= @ “这里$%#任何文本更多的文本”;' – Kiquenet
@Kiquenet:'Regex.Escape'已经做到这一点。 –
@JonSkeet:谢谢你指出Regex.Escape,我正要重新发明一个方形轮,直到我看到你的答案。 – mcdon