我正在尝试使用regexp来匹配以下文本中斜杠之间的条目:
311102Z/5663.00N/00813.02E/GPS//03/-/
对于本例,结果应该是一系列具有以下内容的匹配:
311102Z
5663.00N
00813.02E
GPS
03
-
捕获空条目并返回空匹配项是很重要的。不幸的是,由于各种原因,我们不能在这里使用分组,也不能匹配斜杠本身并在这些斜杠上拆分
我有下面的正则表达式,它几乎可以工作:(.*?)(?=/)
。这个正则表达式的交互显示可以看到here。它可以很好地匹配所有条目,但在每个条目的末尾有额外的空匹配项
我试图用^ {< CD9>}替换^ {< CD8>},但这当然意味着它与空白条目不匹配。
有人知道我能做些什么来让它匹配我想要的方式吗?即没有这些额外的空匹配,但是在斜杠之间没有字符的位置有空条目
如果这关系到兼容性,我将在Python中使用这个正则表达式
或者,您可以将除
/
之外的任何字符匹配1+倍,并在右侧断言一个/
或者获得两个前斜杠之间的位置
解释
[^/]+(?=/)
匹配除/
之外的任何字符的1+倍,并在右侧断言一个/
|
或(?<=/)(?=/)
获取两个正斜杠之间的位置Regex demoPython demo
示例代码
输出
还有一个(Python):
Start your engine!
将
[^/]+
更改为[^/\n]+
,以防止匹配项跨越行终止符您可以将此正则表达式与前向和后向断言一起使用:
RegEx Demo
代码:
正则表达式详细信息:
(?:(?<=/)|^)
:lookback断言我们在前面的位置有start或/
[^/]*
:匹配0个或多个非/
字符(?=/)
:Lookahead断言我们前面有一个/
相关问题 更多 >
编程相关推荐