我正在努力研究正则表达式.我有一个有几个字段的大型机文件.我有一个平面文件解析器,它根据每行的前三个字母区分几种类型的记录.如何编写前三个字母为"CTR"的正则表达式.
Tim*_*nen 92
字符串的开头或开头?
/^CTR.*$/
Run Code Online (Sandbox Code Playgroud)
/= delimiter
^=字符串的开头
CTR=字面值CTR
$=字符串的结尾
.*=除换行符之外的任何字符的零或更多
/^CTR.*$/m
Run Code Online (Sandbox Code Playgroud)
/=定界符
^线的开始=
CTR=字面CTR
$线的一端=
.*=零或多个任意字符除了换行符
m=启用多行模式下,该设置正则表达式来对待每行一个字符串,所以^和$将匹配开始和行末
在多行模式下,您仍然可以使用\A\Z永久锚点匹配字符串的开头和结尾
/\ACTR.*\Z/m
Run Code Online (Sandbox Code Playgroud)
\A=表示字符串的开头
CTR=字面值CTR
.*=除了换行符之外的任何字符的零个或多个
\Z=字符串的结尾
m=启用多行模式
因此,匹配行开头的另一种方法是这样的:
/(\A|\r|\n|\r\n)CTR.*/
Run Code Online (Sandbox Code Playgroud)
要么
/(^|\r|\n|\r\n)CTR.*/
Run Code Online (Sandbox Code Playgroud)
\r=回车/旧Mac OS换行
\n= 换行/ Unix/Mac OS X换行
\r\n= windows换行
注意,如果你打算\在一些支持转义的程序字符串中使用反斜杠,比如php双引号""那么你需要首先转义它们
所以要运行\r\nCTR.*你会用它作为"\\r\\nCTR.*"
Cra*_*ent 14
^CTR
Run Code Online (Sandbox Code Playgroud)
要么
^CTR.*
Run Code Online (Sandbox Code Playgroud)
编辑:
为了更清楚...... ^CTR将匹配行的起点和那些字符...如果您想要做的就是匹配行本身(并且已经有要使用的行)那么这就是您真正需要的(但如果这是在这种情况下,你可能最好使用预制substr()类型功能...不知道你正在使用什么语言......).但是,如果你想匹配和抢行,你会需要像.*或.*$或什么的,这取决于你使用的是什么语言/正则表达式的功能...
尝试^CTR.\*,字面意思是行开头,点击率,任何东西.
这将区分大小写,设置非区分大小写将取决于您的编程语言,或者^[Cc][Tt][Rr].\*在跨区域不区分大小写时使用.
^
Run Code Online (Sandbox Code Playgroud)
CTR像这样将要搜索的字符串()添加到正则表达式中:
^CTR
Run Code Online (Sandbox Code Playgroud)
示例:正则表达式
这样就足够了!
但是,如果您需要以所选语言从整行中获取文本,请添加“匹配任何内容”模式.*:
^CTR.*
Run Code Online (Sandbox Code Playgroud)
示例:更多正则表达式
如果您想发疯,请使用行末匹配器
$
Run Code Online (Sandbox Code Playgroud)
将其添加到不断增长的正则表达式模式中:
^CTR.*$
Run Code Online (Sandbox Code Playgroud)
示例:让我们发疯
注意:根据使用正则表达式的方式和位置,可能必须使用多行修饰符才能使其与多行匹配。关于从文件中挑选行进行处理的最佳策略,可能会有一个完整的讨论,而某些策略将要求这样做:
多行标志 m(在各种语言/上下文中以各种方式指定)
/^CTR.*/gm
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
162420 次 |
| 最近记录: |