【问题标题】:Regex: Add * before and after words Followed by ;正则表达式:在单词之前和之后添加 * 后跟 ;
【发布时间】:2018-01-17 19:43:16
【问题描述】:

我有一些话后面跟着;或(space);

例如:

mother_is_home;
 I love hoping;
James;
Cupidon is magic ;

我想使用一些正则表达式来获得以下内容,单词前后没有任何空格:

*mother_is_home*;
*I love hoping*;
*James*;
*Cupidon is magic*;

无论如何,我做了一个正则表达式,但不是很好。我仍然对单词前后的空格有问题

查找:(\w+)(.*?);

替换为:*${1}${2}*;

【问题讨论】:

    标签: windows notepad++


    【解决方案1】:
    • Ctrl+H
    • 查找内容:^\h*(.+?)\h*;$
    • 替换为:*$1*;
    • 全部替换

    说明:

    ^       : begining of line
    \h*     : 0 or more horizontal spaces
    (.+?)   : group 1, 1 or more any character, not greedy
    \h*     : 0 or more horizontal spaces
    ;       : semi colon
    $       : end of line
    
    • 不要检查. matches newline

    替换:

    *$1*;
    

    给定示例的结果:

    *mother_is_home*;
    *I love hoping*;
    *James*;
    *Cupidon is magic*;
    

    【讨论】:

      【解决方案2】:

      您可以使用以下正则表达式来匹配字符串:

      ( *)?(\w+)(.*);
      

      并且要替换您将使用以下内容:

      *${2}${3}*;
      

      适用于 Just Me 的正则表达式如下:

      ( *)?(\w+)(\s*);
      

      练习正则表达式的好地方是http://regexr.com/。

      【讨论】:

      • 在一个案例中很好,但如果我在同一行中有word1; word2;word3; word4 ; 将无法工作:) 必须是\s
      • 场景word1; word2;word3; word4 ;的预期输出是什么?另一种可能性是使用( *)?(\w+)(\s*); 并替换使用*${2}*;
      • 谢谢你,user8431088,你有权使用(\s*) 我在我的正则表达式上使用它,现在可以正常工作了。
      • 很高兴听到这个消息!您也可以接受答案吗?
      【解决方案3】:

      搜索:(\s)*(\w+)(.*?)(\s)*;

      替换为:*${2}${3}*;

      【讨论】:

      • 为什么要使用这么多组?一个就够了,看我的回答。
      猜你喜欢
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多