正则表达式替换

发布于 2024-12-19 10:40:01 字数 92 浏览 0 评论 0原文

我正在尝试了解有关正则表达式的更多信息,并且一直想知道以下内容:

如何在点字符后插入空格,但仅当点字符不被数字包围时,例如它需要匹配 。但不是22.22!

I'm in the process of trying to learn more about regular expressions and I've been wondering about the following:

How to insert a space after a dot character, but only when the dot character is not surrounded by numbers, e.g. it needs to match . but not 22.22!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

昔日梦未散 2024-12-26 10:40:01

这是零宽度断言的一个很好的例子:

$subject =~ 
    s/(?<=\.         # after a dot,
        (?!          # but not matching
          (?<=\d\.)  # digit followed by dot before, AND
          (?=\d)     # digit afterward
        )
      )/ /x
    g;

我我想你会发现这些评论是不言自明的! :)

This is a nice case of zero-width assertions:

$subject =~ 
    s/(?<=\.         # after a dot,
        (?!          # but not matching
          (?<=\d\.)  # digit followed by dot before, AND
          (?=\d)     # digit afterward
        )
      )/ /x
    g;

I think that you will find the comments self explanatory! :)

小嗷兮 2024-12-26 10:40:01

尝试:

echo "22.22"|perl -pe 's{(\D)\.(\D)}{$1. $2}'
22.22
echo "2x.x2"|perl -pe 's{(\D)\.(\D)}{$1. $2}'
2x. x2

Try:

echo "22.22"|perl -pe 's{(\D)\.(\D)}{$1. $2}'
22.22
echo "2x.x2"|perl -pe 's{(\D)\.(\D)}{$1. $2}'
2x. x2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文