0

试图在字符串开头捕获字符并换行字符串是

.V/1LBOG\n.F/AV0094/08NOV/SAL/Y\n.E/0134249356001"

我正在使用的正则表达式来自上面的字符串,我需要捕获 .V/ 和 .E/

^.[VE]/*

但它似乎只是 ctach .V/ 谁能明白为什么我认为 ^ 表示换行符以及字符串的开头?任何帮助都会非常感激,因为我已经有一段时间遇到这个问题了。如果这不是这样做的正确方法,您能否提出不同的方法。

4

3 回答 3

0

如果你需要 .V 或 .E 试试^.(V|E)/*or|操作符对于检查^.V/*^.E/*

于 2011-12-10T14:07:32.463 回答
0

正则表达式 101:

^表示字符串的开始。你猜对了。字符串只能有一个开头。

^.[VE]/*

方法 :

匹配字符串的开头,后跟任何字符(换行符除外),后跟 V 或 E,后跟 0 到 n /(贪心)。

可能你想要这样的东西:

\.[VE].*?(?:\\n|$)

这意味着匹配一个点,然后是 V 或 E 并匹配所有内容,直到\n或字符串结尾。

如果我错了,请发表评论。

所以.V/1LBOG\n.F/AV0094/08NOV/SAL/Y\n.E/0134249356001"

看起来像这样?

.V/1LBOG
.F/AV0094/08NOV/SAL/Y
.E/0134249356001"

如果是,那么您需要稍微更改一下您的正则表达式:

\.[VE].*

.滥用默认情况下不匹配换行符的事实。

于 2011-12-10T14:10:50.460 回答
0

.in 正则表达式匹配任何单个字符,而不是文字.。如果要匹配文字句点,则需要对其进行转义 ( \.)。*不匹配任意数量的任何字符(就像大多数 shell 那样),而是匹配您放在它前面的任何内容的零个或多个实例。例如,A*将匹配文字字母AAAAA.*并将匹配任何字符串。

^表示一行的开头。^\.[VE]/将匹配.V/and .E/(但仅在行首)。

于 2011-12-10T14:12:34.360 回答