我正在努力研究正则表达式.我有一个有几个字段的大型机文件.我有一个平面文件解析器,它根据每行的前三个字母区分几种类型的记录.如何编写前三个字母为"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 次 |
最近记录: |