正则表达式中问号等特殊字符的转义

在.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

时间: 2024-11-11 06:48:27

正则表达式中问号等特殊字符的转义的相关文章

正则表达式中的转义问题

正则表达式是javascript学习中非常重要的一部分,它的主要作用是验证表单. 说到正则表达式,我们首先想到的是它的创建方式,正则表达式创建的方式有两种:字面量形式和RegExp构造函数. 首先说字面量形式: 创建方法:var expression= / pattern / flags ; pattern(模式)部分可以是任何简单或复杂的正则表达式,可以包含字符类.限定符.分组.向前查找以及反向引用. flags(标志)部分表明正则表达式的行为.其中g表示全局模式,i表示不区分大小写模式,m表

Shell命令行中特殊字符与其转义详解(去除特殊含义)

特殊符号及其转义 大家都知道在一个shell命令是由命令名和它的参数组成的, 比如 cat testfile, 其中cat是命令名, testfile是参数. shell将参数testfile传递给cat命令. 但是, 如果参数中含有特殊字符, 比如说*, *我们知道,是表示任意多个(包括0个)任意字符. 那么shell的工作方式是,它会对这些特殊字符进行预先处理, 然后再将处理的结果传给那个命令. 比如说,如果你的当前目录有file, file1, file2 三个文件, 那么当你执行cat

正则表达式中的特殊字符

正则表达式中的特殊字符 \ 在字面意义和特殊意义之间进行切换.例如\w 表示\w 的特殊意义(见下面的解释)而不是字面值w,但是\$表示不使用$的特殊意义(见下面的解释)而是使用$字符本身^ 字符串的开头$ 字符串的结尾* 零次或多次+ 一次或多次? 零次或一次. 除换行符外的任何字符\b 单词边界\B 非单词边界\d 0-9 的任何数字(与[0-9]相同)\D 任何非数字\f 换页符(form feed)\n 换行符 \r 回车符\s 任何一个空白字符(与[ \f\n\r\t\v]相同)\S

正则表达式中的特殊字符 字符 含意

JS正则表达式大全(整理详细且实用) 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*". ^ 匹配一个输入或一行的开头,/^a/匹配&quo

递归方式的对变量中的特殊字符进行转义/去除转义

方法一:(循环) /********************************************************************工具类*******************************************     * 描述 : 深度加/删反斜杠     * 参数 :     *     &data : 指定替换的数组     *      func : addslashes(默认)=添加反斜杠, stripslashes=删除反斜杠     */   

正则表达式中pattern.match(),re.match(),pattern.search(),re.search()方法的使用和区别

正则表达式(regular expression)是一个特殊的字符序列,描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串. 将匹配的子串替换或者从某个串中取出符合某个条件的子串,或者是在指定的文章中抓取特定的字符串等.Python处理正则表达式的模块是re模块,它是Python语言中拥有全部的正则表达式功能的模块.正则表达式由一些普通字符和一些元字符组成.普通字符包括大小写的字母.数字和打印符号,而元字符是具有特殊含义 正则表达式大致的匹配过程是: 拿正则表达式依次和字符串或者文本

【python】pymongo中正则查询时的转义问题

在查询mongo时用到了正则查询 设字符串为   str = '/ab/cd.ef?g=' 直接用正则查询没有匹配. collection.find({"re":{'$regex':str},'b':{'$nin':[False]}}).count() 原因是 /  .  ? 都是正则表达式中的特殊字符,如果要保留原义则需要用"\"来进行转义 即把字符串改成  str = '\/ab\/cd\.ef\?g=' 但是,由于"\"在python中是一

正则表达式中各种字符的意义

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的. 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 3.1 普通字符 由所有那些未显式指定为元字符的

正则表达式中各种字符的含义

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的. 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 3.1 普通字符 由所有那些未显式指定为元字符的