0

ビジネスの支店の営業時間を保持する要素を含む XML ファイルを変更しようとしています。開店時間と閉店時間しかない支店もあれば、開店時間、昼食の閉店時間、昼食後の開店時間、閉店時間しかない支店もあるため、XML ファイルには一貫性がありません。

以下の両方のタイプの例:

<monday>10.00,17.00</monday>
<monday>09.00,12.30,13.30,17.00</monday>

これらの文字列を以下のようなより良い形式に再フォーマットしたい:

<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>#+.\#+<

#+正規表現に一致する数字を文字列「# +」などに置き換えるように指示しているため、これはとにかくうまくいかないことを理解しています.

正規表現やその他の手段でやりたいことを達成するにはどうすればよいですか?また、正規表現に比較のために式を使用するが、一致する文字のサブセットのみを置き換えるように指示するにはどうすればよいですか?

4

1 に答える 1

0

さて、私はそれを私が予想したよりも早く理解しました。私が使用した式は次のとおりです。

次の検索文字列を使用しました。

(<[a-z]+day>)([0-9]+\.[0-9]+),([0-9]+\.[0-9]+)(</[a-z]+day>)

...そして次の置換文字列:

\1<open>\2</open><lunch></lunch><close>\3</close>\4

次の行に一致します。

<monday>10.00,17.00</monday>

その結果、次の出力が得られました。

<monday><open>10.00</open><lunch></lunch><close>17.00</close></monday>
于 2011-01-22T22:23:57.047 に答える