如何在正则表达式替换中有条件地添加空格

时间:2017-10-22 18:29:47

标签: regex sublimetext3

今天早上醒来的时候,我不知道正则表达的中风。当我去Mass时,我已经能够拼凑这个正则表达式来查找html文档中出现的'Mph'。

(Ⅰ')(小于?= [\ S | \ d])+英里

如果我针对以下测试数据运行它:

<div class="vsMph">
<p>95 Mph</p>
</div>
<div class="vsMph">
<p>95Mph</p>
</div>

正确匹配:

‘ Mph’ and
‘Mph’

同样正确地单独留下'vsMph',这正是我想要的。最后,我将使用相同的技术来匹配结,英尺,英寸,公里等。

我正在使用RegReplace在Sublime Text 3中执行此表达式,最终,我希望使用此正则表达式来查找以空格或数字开头的所有“Mph”,并且:

  1. <abbr>标签中附上'Mph'。
  2. 在数字和数字之间添加一个空格     如果最后一个数字和之间没有空格,则打开<abbr>标记     &#39; MPH&#39;原本。
  3. 换句话说,我想将上述测试数据转换为:

    <div class="vsMph">
    <p>95 <abbr title="Miles per hour">Mph</abbr></p>
    </div>
    <div class="vsMph">
    <p>95 <abbr title="Miles per hour">Mph</abbr></p>
    </div>
    

    我可以让RegReplace添加<abbr>标签,如上面1.中所述,但我在Google上搜索过,我找不到任何告诉我如何在正则表达式中有条件地插入空格的内容取代

    所以我很想知道。是否有可能首先在正则表达式替换中有条件地添加空格,如果是,我该怎么做,或者我是否必须搜索'\ sMph'和'\ dMph'并单独替换它们?

    问候。

1 个答案:

答案 0 :(得分:1)

我建议使用组来匹配Mph。您可以搜索以下正则表达式:

(\d)(\s)?(Mph)

然后使用组替换

$1 <abbr title="Miles per hour">$3</abbr>

输出:

<div class="vsMph">
<p>95 <abbr title="Miles per hour">Mph</abbr></p>
</div>
<div class="vsMph">
<p>95 <abbr title="Miles per hour">Mph</abbr></p>
</div>