【发布时间】:2018-10-04 23:04:01
【问题描述】:
我正在尝试使用 TextWrangler 获取一堆文本文件,匹配一些尖括号标签中的所有内容(到目前为止一切都很好),并且对于 每个 匹配,替换所有出现的特定与另一个角色。
例如,我想采取类似的东西
xx+xx <f>bar+bar+fo+bar+fe</f> yy+y <f>fee+bar</f> zz
匹配<f> 和</f> 中的所有内容,然后用* 替换所有+(但仅限“f”标签内)。
xx+xx <f>bar*bar*fo*bar*fe</f> yy+y <f>fee*bar</f> zz
我想我可以轻松地将包含 + 的“f”标签与类似的表达式匹配
<f>[^<]*\+[^<]*</f>
但我不知道如何为每个匹配项仅替换一个字符子类。我不知道每个标签中有多少个+。 我认为我应该为第一个正则表达式的所有匹配项运行一个正则表达式,但我不确定该怎么做。
(换句话说,我想匹配所有+,但只在特定的尖括号标签内)。
有人有提示吗?
非常感谢, 丹尼尔
【问题讨论】:
-
这个问题真的是关于 UNIX 工具
grep的标记,还是关于一些名为TextWrangler的工具中的同名功能?标记? -
嗨,老实说,两者都可以。如果我可以通过它的 grep 函数在 TextWrangler(我忘记标记 - 我会马上修复,抱歉)中做到这一点,那将是完美的。如果命令行“grep”(我在 OSX 上)还有另一种方法也可以工作......
-
UNIX grep 不是用来做替换的,而是用来做
g/re/p的(它的名字有一个线索:-)),即它是为了全局查找一个正则表达式并打印匹配的字符串。如果您对此持开放态度,那么使用 awk 将是微不足道的。
标签: regex grep textwrangler