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

时间:2011-04-01 16:24:15

标签: regex

我正在尝试使用正则表达式。我有一个有几个字段的大型机文件。我有一个平面文件解析器,它根据每行的前三个字母区分几种类型的记录。如何编写前三个字母为“CTR”的正则表达式。

8 个答案:

答案 0 :(得分:89)

字符串的开头或字符串的开头?

字符串的开头和结尾

/^CTR.*$/

/ =分隔符
^ =字符串的开头
CTR =字面点击率 $ =字符串结束
.* =除了换行符之外的任何字符的零或更多

行的开头和结尾

/^CTR.*$/m

/ =分隔符
^ =行的开头
CTR =字面点击率 $ =行尾 .* =除换行符之外的任何字符的零或更多 m =启用多行模式,这会将正则表达式设置为将每一行视为字符串,因此^$将匹配行的开头和结尾

在多线模式下,您仍然可以将字符串的开头和结尾与\A\Z永久锚点匹配

/\ACTR.*\Z/m

\A =表示字符串
的开头 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 newline

注意,如果你打算在某些支持转义的程序字符串中使用反斜杠\,比如php双引号""那么你需要首先转义它们

所以要运行\r\nCTR.*,您可以将其用作"\\r\\nCTR.*"

答案 1 :(得分:14)

^CTR

^CTR.*

编辑:

更清楚...... ^CTR将匹配行的起点和那些字符...如果您想要做的只是匹配行本身(并且已经有要使用的行)那么这就是全部你确实需要(但如果是这种情况,你可能最好使用预制substr()类型函数...不知道你正在使用什么语言......)。但是如果你想匹配并抓住这一行,你需要.*.*$等等,这取决于你使用的语言/正则表达式函数...

答案 2 :(得分:8)

尝试^CTR.\*,字面表示行首,点击率,任何

这将是区分大小写,设置非区分大小写将取决于您的编程语言,或者如果跨环境不区分大小写,请使用^[Cc][Tt][Rr].\*

答案 3 :(得分:4)

要在一行开头匹配的正则表达式符号:

^

将您要搜索的字符串(CTR)添加到正则表达式中,如下所示:

^CTR

示例:regex

这应该足够了!

但是,如果您需要使用您选择的语言从整行获取文字,请添加“匹配任何内容”模式.*

^CTR.*

示例:more regex

如果您想变得疯狂,请使用行尾匹配器

$

将其添加到不断增长的正则表达式模式中:

^CTR.*$

示例:lets get crazy

注意:根据您使用正则表达式的方式和位置,您可能必须使用多行修饰符才能使其匹配多行。可以对从文件中挑选行来处理它们的最佳策略进行全面讨论,并且一些策略需要这样:

多行标记 m(在各种语言/上下文中以各种方式指定)

/^CTR.*/gm

示例:we had to use m on regex101

答案 4 :(得分:3)

^CTR.*$

匹配以CTR开头的行。

答案 5 :(得分:2)

不确定如何将其应用于服务器上的文件,但通常情况下,匹配字符串开头的正则表达式为:

^CTR


^表示字符串/行的开头

答案 6 :(得分:1)

(?i)^[ \r\n]*CTR

(?i) -- case insensitive -- Remove if case sensitive.
[ \r\n]  -- ignore space and new lines
* -- 0 or more times the same
CTR - your starts with string.

答案 7 :(得分:0)

这个问题含糊不清。

你的输入字符串是什么?它是整个文件吗?或者它一次是1行?一些答案是假设后者。我想回答前者。

您想从正则表达式中返回什么?您是否想要匹配的真/假这一事实?或者您想提取以CTR开头的整行?我会回答你只想要一个真/假的比赛。

为此,我们只需要确定CTR是在文件的开头发生,还是紧跟在新行之后。

/(?:^|\n)CTR/