使用Regex在点后添加空格,不包括数字和链接字符串之间的点

我使用下面的正则表达式(?<=[。?!])(?=[^\s])(?![0-9])添加一个空格后的点,如果需要(排除在标点后,如果点在数字之间)

当执行搜索和替换(替换一个空间)。一切都好了。唯一的问题是当有一些链接在我的字符串。例如,“https://test。com/87786”或“/8787786。jpeg”也被添加在那里。

关于如何改变我的表达式排除在“。”后的链接字符串添加空格的任何想法?

谢谢

###我不认为你可以实现它只是向后看,因为没有引擎,我知道支持可变长度向后看。

你似乎想要做的是替换一个序列:

字符串的开始或不是斜杠或点

(非空)字母编码点序列

一个点

任何字母编码点

然后在点后面插入一个空格。你可以实现它通过上面的描述转换成相应的正则表达式,那么前三个标记为一个第四作为另一个捕获(这是使用括号),然后在替换字符串中使用它(一些引擎使用斜数字表明了应该去哪里在这种情况下,更换应该是" 1 " " 2"

您可能需要稍微调整第一个“开始”部分,您可能还需要替换几次,直到字符串变得稳定。Otherwise。strings。like。this。will。still。have。dots。

更新要求:

(?<=^|[^/.a-zA-Z])[a-zA-Z]+\.(?=[a-zA-Z])

以下是我的评论:

# positive lookbehind (fixed length) == "preceded by"
(?<=             )
# start of string
    ^
# or
     |
# any except for a slash or a dot or a letter
      [^/.a-zA-Z]
# A word (one or more chaacters)
                  [a-zA-Z]+
# A dot (it needs to be escaped with a backslash)
                           \.
# positive lookahead == "followed by"
                             (?=        )
# a letter
                                [a-zA-Z]

这个regexp比我的第一个想法更好,因为它完全匹配单词和前面必须放空格的点。所以你可以用"\0 "替换,并将空格添加到匹配的末尾。

参见https://regexr。com/65vb6示例。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码