在.NET Framework 开发人员指南 的 字符转义 一节 有这样一段话。除 .$ ^ { [ ( | ) * + ? \
外,其他字符与自身匹配。但是其中并未注明这些字符应该匹配为什么字符。为了方便自己以后查阅,也为了方便网友搜索我就写在这里了。
[Sipo]
点的转义:. ==> \\u002E 美元符号的转义:$ ==> \\u0024 乘方符号的转义:^
==> \\u005E 左大括号的转义:{ ==> \\u007B 左方括号的转义:[ ==> \\u005B
左圆括号的转义:( ==> \\u0028 竖线的转义:| ==> \\u007C 右圆括号的转义:) ==> \\u0029
星号的转义:* ==> \\u002A 加号的转义:+ ==> \\u002B 问号的转义:? ==>
\\u003F 反斜杠的转义:\ ==> \\u005C
*、+ 和 ?
限定符都被称为“贪心的”,因为它们匹配尽可能多的文本。但是,有时您只需要最小的匹配。
例如,您可能搜索 HTML 文档,以查找括在 H1
标记内的气动隔膜泵章节标题。该文本在您的文档中如下:
<H1>Chapter
1 – Introduction to Regular Expressions</H1>
下面的表达式匹配从开始小于符号 (<)
到关闭 H1 标记的大于符号 (>) 之间的所有内容。
/<.*>/
如果您只需要匹配开始 H1
标记,下面的“非贪心”表达式只匹配 <H1>。
/<.*?>/
通过在 *、+ 或 ? 限定符之后放置
?,该表达式从“贪心”表达式转换为“非贪心”表达式或者最小匹配。
编写所需要的正则表达式时是比较麻烦的事,很容易出错,有时还要转义。
因此可以考虑将一些简单的正则表达式,直接通过气动隔膜泵示例字符串来自动生成。
下面是可变部分仅为数字时,生成方法。
public string GetRegexFromSample(string
sSample)
{
string sRegex =
sSample;
string sSpecial =
"\\.$^{[(|)*+?";
for (int i = 0; i < sSpecial.Length;
i++)
{http://www.it168.com/
char ch =
sSpecial[i];
int n =
(int)ch;
string s =
String.Format("\\00{0:X}",n);
sRegex = sRegex.Replace(ch.ToString(),
s);
}
Regex reg = new Regex( "(\\d+)",
RegexOptions.IgnoreCase);
MatchCollection mc =
reg.Matches(sSample);
foreach (Match m in
mc)
{
sRegex = sRegex.Replace(m.Groups[1].Value,
"\\d+");
}
return sRegex;
}
正则表达式中问号等特殊字符的转义,布布扣,bubuko.com