正则表达式仅在行首匹配字符

我正在尝试正则表达式。 我有一个有几个字段的大型机文件。 我有一个平面文件分析器,根据每行的前三个字母区分几种类型的记录。 如何写前三个字母为“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/