正则表达式仅在行首匹配字符
我正在尝试正则表达式。 我有一个有几个字段的大型机文件。 我有一个平面文件分析器,根据每行的前三个字母区分几种类型的记录。 如何写前三个字母为“CTR”的正则表达式?
提前致谢
字符串的开始或字符串的开始?
字符串的开始和结束
/^CTR.*$/
/
=分隔符
^
=字符串的开始
CTR
=文字CTR
$
=字符串的结尾
.*
=除换行符以外的任何字符的零个或多个
行的开始和结束
/^CTR.*$/m
/
=分隔符
^
=行的开始
CTR
=文字CTR
$
=行尾
.*
=除换行符以外的任何字符的零个或多个
m
=启用多行模式,这设置正则表达式把每一行作为一个字符串,所以^
和$
将匹配行的开始和结束
在多线模式下,您仍然可以将字符串的开始和结束与\A\Z
永久性锚点匹配
/\ACTR.*\Z/m
\A
=表示字符串的开始
CTR
=文字CTR
.*
=除换行符以外的任何字符的零个或多个
\Z
=字符串的结尾
m
=启用多线模式
因此,匹配行首的另一种方法是这样的:
/(\A|\r|\n|\r\n)CTR.*/
要么
/(^|\r|\n|\r\n)CTR.*/
\r
=回车/旧的Mac OS换行符
\n
=换行符/ Unix / Mac OS X换行符
\r\n
= windows换行符
注意,如果你打算在一些支持转义的程序字符串中使用反斜杠\
,比如php的双引号""
那么你需要先转义它们
所以运行\r\nCTR.*
你可以用它作为"\\r\\nCTR.*"
^CTR
要么
^CTR.*
编辑:
更清楚的是^CTR
会匹配行的开头和那些字符…如果你想要做的就是匹配行本身(并且已经有行使用),那么这就是你真正需要的(但如果这是如此,你可能会更好使用预制substr()
类型的功能…不知道你正在使用什么语言…)。 但是,如果你想匹配和抓线,你将需要像.*
或.*$
或其他任何东西,取决于你正在使用什么语言/正则表达式函数…
尝试^CTR.\*
,这实际上意味着开始行,点击率,任何东西 。
这将区分大小写 ,并且设置非区分大小写将取决于您的编程语言,或者使用^[Cc][Tt][Rr].\*
如果跨环境不区分大小写。
^CTR.*$
匹配以CTR
开头的行。
不知道如何将它应用到您的服务器上的文件,但通常,匹配字符串开头的正则表达式是:
^CTR
^
表示字符串/行的开始
(?i)^ [\ r \ n] *点击率 (?i) - 不区分大小写 - 如果区分大小写,则删除。 [\ r \ n] - 忽略空格和新行 * - 0或更多次相同 点击率 - 你的字符串开头。
这个问题有些模棱两可。
什么是你的输入字符串? 它是整个文件吗? 还是一次一行? 一些答案是假设后者。 我想回答前者。
你想从正则表达式中返回什么? 事实上,你想要一个真实/错误的是否是一场比赛? 或者你想提取以CTR开始的整个行? 我会回答你只是想要一个真/假的比赛。
要做到这一点,我们只需要确定点击率是出现在文件的开头,还是紧跟在新的一行之后。
/(?:^|\n)CTR/