regex - 正则表达式解析scala中两个字符串之间的行
问题描述
我有一个自由格式的文本文件(不是 XML),我想从中解析两个模式之间的线条。这是示例数据
<Hi>
col1 col2 col3
1 2 3
4 5 6
helo how are
<How>
col1 col2
1 2
helo hi'
我想将每个标签 ie<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*$"
有没有办法可以为空行指定模式。任何帮助表示赞赏。
解决方案
您可以使用此正则表达式并从 group1 捕获您的数据,
<[^>]+>\s*([\w\W]*?(?=\n\n|$))
解释:
<[^>]+>\s*
<[^>]+>
- 使用和可选的空格开始捕获标签\s*
([\w\W]*?
- 以非贪婪的方式捕获任何字符,包括换行符(?=\n\n|$))
- 积极向前看,以确保比赛在看到两个换行符或字符串的绝对结尾时立即停止
推荐阅读
- windows - 编码 HRESULT 值:使用 FACILITY_ITF 还是设置位 29?
- c - C中的动态链接库
- c - 没有`...`的可变参数函数
- sql - 正确查询以返回 1 行,而不是在许多列中的 2 列不变时重复
- python - 从提取的 JSON 数据中追加和/或写入 CSV
- reactjs - ReactJS:谷歌地图(给出无效值错误)
- node.js - 如何通过使用 npm 安装软件包来解决此错误?
- javascript - 用动态长度数组替换多个子字符串的更好方法?
- python - 为 python 程序打开多个命令窗口
- tensorflow - 为重新训练的 Tensorflow Hub 模块提供新功能