2

次の形式のテキストがあります

[1/12/2008 2:32:11 p.m. - name]
line 1
[1/12/2008 2:36:00 p.m. - name] - PRIVATE
line 2 [some text] sd
[1/12/2008 2:36:00 p.m. - name]
line 3

アイテムに分割したいので、各アイテムの時間、名前、テキストにアクセスできます。

e.g.:
(item 1)
  1: 1/12/2008 2:32:11 p.m.
  2: name
  3: line 1
(item 2)
  1: 1/12/2008 2:36:00 p.m.
  2: name
  3:  - PRIVATE
    line 2 [some text] sd
(item 3)
  1: 1/12/2008 2:36:00 p.m.
  2: name
  3: line 3

これを達成するために単一の正規表現パターンを考え出そうとしましたが、うまくいきませんでした:

\[([0-9\/ \:\.apm]+?) - ([a-z_\-0-9]+?)\](.*?\r\n.+?)(?:\[[0-9\/ \:\.apm]+? - [a-z_\-0-9]+?\])

上記のこのパターンは、最初のアイテムのみを返します。

\[([0-9\/ \:\.apm]+?) - ([a-z_\-0-9]+?)\](.*?\r\n.+?)(?!\[[0-9\/ \:\.apm]+? - [a-z_\-0-9]+?\])

上記のパターンはすべてのアイテムを返しますが、テキストの最初の文字 (グループ 3) のみを返します。

助言がありますか?

4

1 に答える 1

4

これはあなたが望むものをあなたに与えるように見えます。

\[([0-9\/ \:\.apm]+?) - ([a-z_\-0-9]+?)\](.*?\r\n.+.*?)

RegEx テスターでテストしたところ、適切な形式になっているようです。

于 2008-12-03T01:37:31.417 に答える