regex - 按字符分隔符和子元素分割行
问题描述
在这个字符串中:
#animal the cat #tree palm tree
我要匹配
#animal
the cat
和
#tree
palm tree
我找到了几种方法来匹配第一个,但我在第二个 # 字符处停止并从那里继续时遇到问题。
(?<=#)(\w*)\s(.*)(?!#)
发现只有一个匹配捕获所有内容,#animal
直到结束。
将标签旁边的捕获器延迟捕获标签
(?<=#)(\w*)\s(.*?)(?!#)
我错过了什么?
解决方案
你需要
(#\w+)\s+(.*?)(?=#\w|$)
请参阅正则表达式演示。
如果可能有换行符,您可以替换.
为[\s\S]
/ [\w\W]
/ [\d\D]
/(?s:.*?)
或只是在模式前加上(?s)
.
详情:
(#\w+)
- 第 1 组:一个#
字符,然后是一个或多个单词字符\s+
- 一个或多个空格(.*?)
- 第 2 组:除换行符之外的任何零个或多个字符尽可能少(?=#\w|$)
- 紧靠右边,必须有#
一个或多个单词字符或字符串结尾。
推荐阅读
- web-applications - 如何使我的网络应用程序与我的网站不同?
- html - 有没有一种方法可以将垂直滑块与下面的其他网站部分隔离开来?
- r - 根据条件在R中的行中的值之间填充值
- python - 在 Tensorflow 的 Metric 中转换 y_pred 的最佳实践
- c# - Tensorflow.InvalidArgumentError: '不能挤压昏暗 [1],预期维度为 1,得到 3 [[{{node InceptionV1/Logits/SpatialSqueeze}}]]'
- macos - 为什么 PyQt 菜单在 macOS 上被冻结?
- wxpython - wxEVT_ENTER_WINDOW 不会改变按钮背景颜色
- c - 重新分配后 vsnprintf 失败
- c# - C# HttpWebRequest 返回错误 403。如何从 C# 中的 HttpWebRequest 修复 403 错误
- python - 使用 numpy savetxt 时丢失精度