首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要regex帮助才能修改XML文件

需要regex帮助才能修改XML文件
EN

Stack Overflow用户
提问于 2011-01-23 05:31:16
回答 1查看 976关注 0票数 0

我正在尝试修改一个XML文件,该文件包含保存企业分支机构开业时间的元素。XML文件是不一致的,因为对于某些分支,它只有开放时间和关闭时间,而对于其他分支,它有开放时间、午餐关闭时间、午餐后开放时间和关闭时间。

下面是两种类型的示例:

代码语言:javascript
运行
复制
<monday>10.00,17.00</monday>
<monday>09.00,12.30,13.30,17.00</monday>

我想将这些字符串重新格式化为更好的格式,如下所示:

代码语言:javascript
运行
复制
<monday>
  <open>10.00</open>
  <lunch></lunch>
  <close>17.00</close>
</monday>

<monday>
  <open>09.00</open>
  <lunch>12.30 - 13.30</lunch>
  <close>17.00</close>
</monday>

我一直试图在我的Mac上使用BBEdit正则表达式来进行更改,但我遇到了困难,特别是因为我不确定如何才能让正则表达式替换我告诉它进行匹配的文本的子集。例如,在伪代码中,我希望正则表达式这样做:

替换<monday>time1,time2</monday>

使用<monday><open>time1</open><lunch></lunch><close>time2</close></monday>

替换<monday>time1,time2,time3,time4</monday>

使用<monday><open>time1</open><lunch>time2 - time3</lunch><close>time4</close></monday>

我不太熟悉正则表达式,所以我肯定会犯一些错误,但到目前为止,我一直在尝试以下方法:

><open>#+\.#+<open><lunch></lunch><close>#+.\#+<替换>#+\.#+,#+\.#+<

我知道这是行不通的,因为我告诉正则表达式用字符串'#+‘等替换它与#+匹配的数字。

我如何通过正则表达式或其他方法实现我想要做的事情,以及如何告诉正则表达式使用表达式进行比较,但只替换它匹配的字符的子集?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-23 06:23:57

嗯,我想得比我预想的要快。下面是我使用的表达式:

我使用了以下查找字符串:

代码语言:javascript
运行
复制
(<[a-z]+day>)([0-9]+\.[0-9]+),([0-9]+\.[0-9]+)(</[a-z]+day>)

...and以下替换字符串:

代码语言:javascript
运行
复制
\1<open>\2</open><lunch></lunch><close>\3</close>\4

要匹配以下行:

代码语言:javascript
运行
复制
<monday>10.00,17.00</monday>

这导致了以下输出:

代码语言:javascript
运行
复制
<monday><open>10.00</open><lunch></lunch><close>17.00</close></monday>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4770745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档