我几乎失去了4个小时,试图使它的工作,我给予了。
给定下一个字符串:
adsdasd.sdfdsfsdf.f43fvev.ASCSDF.sfgsdfssdf.yaml
我想要一个正则表达式,posix可能:
- 用所有
.
替换/
- 除了
.yaml
应该保持这样。
所以,这一定是最后一个字符串:
adsdasd/sdfdsfsdf/f43fvev/ASCSDF/sfgsdfssdf.yaml
我尝试了:
- Regex to match one character exactly one time anywhere inside a string
- How can I match "anything up until this sequence of characters" in a regular expression?
- 和正则表达式101
:(
4条答案
按热度按时间mlnl4t2r1#
这将有助于获取除最后一个点之外的所有点:
使用前瞻检查在我们找到的点之后是否还有另一个点(前瞻不是匹配的一部分)。
Regex101
4urapxun2#
不确定这是否是您想要的。https://regex101.com/r/3FpEbq/1
同样在这种情况下,您可以先将所有.“”替换为“/",然后将“/yaml$”替换为.“yaml”
zu0ti5jz3#
您需要 * 负前瞻 *(请参见https://www.rexegg.com/regex-lookarounds.html):
示例:https://regex101.com/r/OdbsUb/1
0pizxfdo4#
广义表达式(表示在正则表达式中不含“yaml”):
@SelVazi之类的正前瞻,或下面的负前瞻:
看看https://regex101.com/r/lcd0ds/1和https://www.pcre.org/pcre.txt