RegEx解析Scala中两个字符串之间的行

wan*_*onk 2 regex scala

我有一个自由格式的文本文件(不是XML),我想从中解析两个模式之间的线。这是样本数据

<Hi>
col1 col2 col3
1 2 3 
4 5 6
helo how are 

<How>
col1 col2
1 2 
helo hi'
Run Code Online (Sandbox Code Playgroud)

我想每个标签之间即解析数据<Hi>blank线作为一个字符串。类似地,<How> 和之间的数据blank作为另一字符串。

到目前为止,我尝试过的正则表达式模式不起作用。

val pattern = "^<Hi>(.*)\\n"
val pattern = "^<Hi>(.*)\\s*$"
val pattern = "^<Hi>(.*)"
val pattern = "^<Network>(.*)((\\r\\n|\\n|\\r)$)|(^(\\r\\n|\\n|\\r))|^\\s*$"
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以为空白行指定模式。任何帮助表示赞赏。

Pus*_*shi 5

您可以使用此正则表达式来捕获来自group1的数据,

<[^>]+>\s*([\w\W]*?(?=\n\n|$))
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

说明:

  • <[^>]+>\s*-开始使用<[^>]+>和可选的空格捕获标签\s*
  • ([\w\W]*? -以非贪婪的方式捕获包括换行符在内的所有字符
  • (?=\n\n|$)) -积极向前看,以确保一旦看到两个换行符或字符串的绝对结尾,匹配就会停止