我很难找到用于完成此任务的正确正则表达式 - 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
- 但它们之间有一个空格......
...我认为RegEx会以某种方式对句子中的所有字母重复此操作。
答案 0 :(得分:0)
如果你能接受一个正则表达式只能确保10个星号跟随文本(并忽略它之前的任何内容),那么你可以尝试像
这样的东西 查找: [^*](?=[^*]*\*{10,}/)
REPLACE: "$0 "
(添加引号以更好地可视化单个空格)。
这使用positive lookahead assertion来确保在当前字符(可能不是星号)之后跟随**********/
序列。重复捕获组的方法不起作用,因为每次重复都会覆盖前一个匹配。