Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式仅匹配行首字符_Regex - Fatal编程技术网

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

Regex 正则表达式仅匹配行首字符,regex,Regex,我正在努力研究正则表达式。我有一个大型机文件,它有几个字段。我有一个平面文件解析器,它根据每行的前三个字母区分几种类型的记录。如何编写前三个字母为“CTR”的正则表达式。尝试^CTR.\*,字面意思是行的开始,CTR,任何东西 这将区分大小写,设置不区分大小写将取决于您的编程语言,如果跨环境区分大小写很重要,则使用^[Cc][Tt][Rr].\* ^CTR.*$ 匹配以CTR开头的行 ^CTR 或 编辑: 更清楚地说:^CTR将匹配行首和这些字符。如果您只想匹配一行本身(并且已经有了要使用的

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

尝试
^CTR.\*
,字面意思是行的开始,CTR,任何东西

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

^CTR.*$
匹配以
CTR
开头的行

^CTR

编辑:


更清楚地说:
^CTR
将匹配行首和这些字符。如果您只想匹配一行本身(并且已经有了要使用的行),那么这就是您真正需要的。但如果是这种情况,最好使用prefact
substr()
type函数。我不知道,你在用什么语言。但是,如果您试图匹配并抓住这一行,您将需要类似于
*
*$
之类的东西,这取决于您使用的语言/regex函数。

不确定如何将其应用于服务器上的文件,但通常,匹配字符串开头的regex是:

^CTR


^
表示字符串/行的开头

行的开头还是字符串的开头

字符串的开始和结束
/
=分隔符
^
=字符串的开头
CTR
=文字CTR
$
=字符串末尾
*
=除换行符以外的任何字符的零个或多个

生产线的起点和终点
/
=分隔符
^
=行的开头
CTR
=文字CTR
$
=行尾
*
=除换行符以外的任何字符的零个或多个
m
=启用多行模式,这会将正则表达式设置为将每行视为字符串,因此
^
$
将匹配行的开始和结束

在多行模式下,您仍然可以使用
\A\Z
永久锚来匹配字符串的开头和结尾

/\ACTR.*\Z/m
\A
=表示字符串的开头
CTR
=文字CTR
*
=除换行符以外的任何字符的零个或多个
\Z
=字符串末尾
m
=启用多行模式

因此,另一种匹配线路起点的方法如下:

/(\A|\r|\n|\r\n)CTR.*/

\r
=回车/旧Mac OS换行符
\n
=换行/Unix/Mac OS X换行
\r\n
=windows新行

注意,如果要在一些支持转义的程序字符串中使用反斜杠
\
,如php双引号
,则需要首先转义它们

因此,要运行
\r\nCTR.*
您可以将其用作
“\\r\\nCTR.*”

(?i)^[\r\n]*CTR (?i)--不区分大小写--如果区分大小写,则删除。 [\r\n]--忽略空格和新行 *--0次或更多次相同 CTR-以字符串开始。
这个问题有歧义

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

您希望从正则表达式返回什么?你想知道是否匹配的事实?还是要提取以CTR开头的整行?我会回答你只需要一个对/错匹配

要做到这一点,我们只需要确定CTR是发生在文件的开头,还是紧跟在新行之后

/(?:^|\n)CTR/
要在行首匹配的正则表达式符号: 将您正在搜索的字符串(
CTR
)添加到正则表达式中,如下所示:

^CTR
例如:

那就足够了

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

^CTR.*
例如:

如果你想发疯,使用行尾匹配器

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

^CTR.*$
例如:

注意:根据使用regex的方式和位置,可能需要使用多行修改器使其匹配多行。可以就从文件中挑选行以进行处理的最佳策略进行全面讨论,其中一些策略需要:

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


示例:

CTR之后的所有内容都与。*匹配,直到行尾或字符串末尾,这取决于您使用的语言。一个人应该希望您能在5年后选择答案。这个问题不应该结束,因为它不太广泛。我的钱球是,“
m
=启用多行模式,这将regex设置为将每一行视为一个字符串,因此
^
$
将匹配行的开头和结尾”--我认为值得强调。我认为只要输入
^
$
,情况就是这样。不是这样!快乐100。
/(?:^|\n)CTR/
^
^CTR
^CTR.*
$
^CTR.*$
/^CTR.*/gm