正则表达式(RegEx):在包围句子的每个字符之间添加空格

时间:2014-03-18 19:47:18

标签: regex eclipse

我很难找到用于完成此任务的正确正则表达式 - RegEx在大文件中用作ECLIPSE JUNO中的FIND / REPLACE。

这是场景;我有这样的评论行(显然这只是一个例子):

/********** BEGIN - CODE SECTION **********/
  $code = "Regex";
  echo "<p>{$code}</p>";
/********** END - CODE SECTION **********/

我希望它看起来如下,使用Eclipse Juno中的FIND / REPLACE的正则表达式功能:

/********** B E G I N   -   C O D E   S E C T I O N **********/
  $code = "Regex";
  echo "<p>{$code}</p>";
/********** E N D   -   C O D E   S E C T I O N **********/

我尝试了很多东西,包括我认为正确的东西:

FIND:

(\*{10}) ([A-Z \-]){1}([A-Z \-])* (\*{10})

REPLACE:

$1 $2 $3 $4

...假设$2$3之间的空格可以解决问题,但我得到的是:

/********** D T **********/

我很熟悉RegEx(显然),仍在学习,并且非常感谢不仅是一个解决方案,还有一个解释,如果可能的话,这将成为我和他人的学习经历。

谢谢!

修改/更新:

我还没有得到任何回复(在[差不多一个小时过去之后这在SO中很少见],所以我将分解,并添加我正在尝试的RegEx代码的解释。

  • RegEx字符串开头和结尾的代码(*{10})选择10个星号**********

  • 在表达式的中心,我尝试查找并捕获在发生一个或多个大写字母[s] ([A-Z -]){1}之前出现的单个大写字母(或连字符)([A-Z -])*的位置

  • 然后,我输入REPLACE字符串,该字符串将使用所有四个&#34;捕获的组&#34; ($1$4是10个星号的开始和结束集......

  • ...剩下的两个小组代表找到的字母$2,以及跟随它的字母$3 - 但它们之间有一个空格......

    < / LI>
  • ...我认为RegEx会以某种方式对句子中的所有字母重复此操作。

1 个答案:

答案 0 :(得分:0)

如果你能接受一个正则表达式只能确保10个星号跟随文本(并忽略它之前的任何内容),那么你可以尝试像

这样的东西

查找: [^*](?=[^*]*\*{10,}/)

REPLACE: "$0 "(添加引号以更好地可视化单个空格)。

这使用positive lookahead assertion来确保在当前字符(可能不是星号)之后跟随**********/序列。重复捕获组的方法不起作用,因为每次重复都会覆盖前一个匹配。

live on regex101.com