【发布时间】:2019-08-16 03:50:49
【问题描述】:
给定一个任意长度的字符串、一个换行符和另一个相同长度的字符串,是否可以生成匹配第一行字符正下方的字符的正则表达式?
例如,对于所有这些输入,哪种单一正则表达式模式可以捕获 X 下方的字符:
........X.. and .X......... and .....X..... etc.
........... ........... ...........
在我看来,你必须知道 X 的位置才能匹配下面的字符。手动我可以找出模式
X\.+\n.{8}(.)
在本例中捕获 X 下面的字符
........X..
...........
因为我知道 X 是第一行的第 9 个字符。但是,如果 X 有任何其他位置,这将不起作用,这是问题的核心。
所以问题是:是否可以在正则表达式中创建一个模式,匹配另一个字符下面的字符,那会是什么样子?
【问题讨论】:
-
意识到认为正则表达式可以动态计算是一种谬误。没有什么比事实更远了。
-
IMO,这对于正则表达式来说似乎太具体了,利用字符串的索引可以更容易地完成。例如,在c#中,您可以找到'X'的
index,然后转到下一行,然后拉出strLine[index]的字符 -
但是可以肯定的是,可以预先构造一个正则表达式
(?m)^.{15}.+\r?\n^.{15}(.)其中 group1 包含所述字符。
标签: regex