【问题标题】:Regex find & replace all spaces with underscore between tags正则表达式在标签之间查找并替换所有带下划线的空格
【发布时间】:2012-08-15 21:43:34
【问题描述】:

我正在尝试在将 xml 文档导入数据库之前对其进行格式化。我有几百行 <Image #1 File Name>Random string to find and replace</Image #1 File Name> 我不知道我的生活是否正确地查找和替换正则表达式中的模式来做我需要的事情。我能够将所有实例与此匹配:

<Image #1 File Name>(.*?)</Image #1 File Name>

但我不确定我需要在打开/关闭标签&lt;Image #1 File Name&gt;Random_string_to_find_and_replace&lt;/Image #1 File Name&gt;之间用下划线替换空格的模式@

【问题讨论】:

  • 标签中的空格怎么办?像这样的 xml 标签中不能有空格。这只是无效的 xml。
  • 我不担心验证,因为这仅用于导入数据库
  • Sublime Text 的正则表达式引擎不允许您搜索/替换类似的东西,IIRC,因为您无法修改捕获组。

标签: regex replace sublimetext2


【解决方案1】:
awk -F'<|>' '{gsub(/ /,"_",$3);print"<"$2">"$3"<"$4">"}' yourxmlfile

好的,您可以在过滤之前使用~匹配运算符进行检查:

awk -F'<|>' '{if ($0 ~ /Image #1 File Name/) {gsub(/ /,"_",$3);print"<"$2">"$3"<"$4">"} else {print;}}' yourxmlfile

【讨论】:

  • 到达那里...我只需要替换 xml 文件中的某些节点()。这会执行每个节点,并在每个打开和关闭行标记之后添加 ,即。 &
【解决方案2】:

我建议下一个技巧:

  1. &lt;Image #1 File Name&gt;&lt;/Image #1 File Name&gt; 替换为两个 不带空格的不同特殊词(例如 MY_START_TAGMY_END_TAG)。
  2. 用下划线替换所有空格。
  3. 还原第一步。

分而治之:)

【讨论】:

  • 我要做的是将 xml 文档导入 MySQL 数据库,然后对这些列进行字符串替换。应该是最简单的无痛方式。感谢您的意见
猜你喜欢
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多