【问题标题】:Regex for any characters including new lines in Perl [duplicate]任何字符的正则表达式,包括 Perl 中的新行 [重复]
【发布时间】:2016-07-14 22:42:14
【问题描述】:

我需要一个像([.\n]*) 这样的正则表达式,但这不起作用。我也试过s修饰符...

我想从表中获取数据,在某些情况下有效的正则表达式是:

~m/>(@ARGV)<\/.*\n(<td.*\n*.*\/td>\n){3}<td(.*\n*.*\n*)<\/td>/

我需要使用$3,但没有定义换行符的数量,我不知道如何解决这个问题。有人可以帮帮我吗?

【问题讨论】:

  • . 匹配任何带有/s 修饰符的字符。不是匹配点和换行的[.\n]
  • 不要使用正则表达式来解析 HTML/XML。这种方式存在疯狂和极端的代码脆弱性。使用真正的 HTML/XML 解析器来提取您想要的数据。
  • 感谢您的回答。还有一个问题...我需要编写最大长度为 160 个字符的代码,如果我使用解析器来提取我需要的数据,你认为有可能吗?
  • 请详细说明您要做什么。为什么限制为 160 个字符?
  • 为什么你的代码只能是 160 个字符?这个代码是高尔夫吗?

标签: regex perl newline


【解决方案1】:

我没有在您的测试字符串中找到~m@ARGV。于是,我又做了一个模式:

<td>((?:<span.*\n*){3})</td>

REGEX 101 DEMO.

【讨论】:

  • 谢谢,但问题是我不知道确切的换行数,它可以是 0 或更多。我也尝试写 * 和 {0,} 而不是像你那样写的 {7}。 here is the sample data
  • 现在捕获组在 $1 中。可以吗?
  • 我用了原版和这个的一部分,现在可以了,谢谢。
  • 我还为未知数量的新行制作了第 7 版。请检查是否有帮助
猜你喜欢
  • 2012-01-08
  • 2011-02-21
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多