我正在尝试使用正则表达式。我有一个有几个字段的大型机文件。我有一个平面文件解析器,它根据每行的前三个字母区分几种类型的记录。如何编写前三个字母为“CTR”的正则表达式。
答案 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.*$
注意:根据您使用正则表达式的方式和位置,您可能必须使用多行修饰符才能使其匹配多行。可以对从文件中挑选行来处理它们的最佳策略进行全面讨论,并且一些策略需要这样:
多行标记 m
(在各种语言/上下文中以各种方式指定)
/^CTR.*/gm
答案 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/