0

テキスト ブロック内の 4 つの異なるものに一致する 4 つの正規表現パターンを作成するには、助けが必要です。

これはテキストのブロックです (名前は関係ありません):

[2013/8/27 - 20:44:3] AdmCmd: Damian Santos was fined $1000 by Scott Parker, reason: BH(8-27-2013)
[2013/8/29 - 21:56:49] AdmCmd: Jimmy Greiner was fined $304389 by Scott Parker, reason: LOL(8-29-2013)
[2013/8/29 - 22:4:54] AdmCmd: Jimmy Greiner has been jailed by Scott Parker, reason: LOL(8-29-2013)
[2013/8/29 - 22:5:38] AdmCmd: Jimmy Greiner has been released from prison by Scott Parker, reason: TS(8-29-2013)
[2013/8/29 - 22:42:55] AdmCmd: James McAdams has been released from prison by Damian Santos, reason: test(8-29-2013)
[2013/8/30 - 20:17:23] AdmCmd: James McAdams has been released from prison by Scott Parker, reason: TS(8-30-2013)
[2013/8/30 - 20:26:15] AdmCmd: James McAdams has been jailed by Jimmy Greiner, reason: Test(8-30-2013)
[2013/8/30 - 20:26:37] AdmCmd: James McAdams has been released from prison by Scott Parker, reason: Test(8-30-2013)
[2013/8/31 - 11:35:35] AdmCmd: Scott Parker was fined $5000 by Scott Parker, reason: BH(8-31-2013)
[2013/8/31 - 11:36:0] AdmCmd: Scott Parker was fined $5000 by Scott Parker, reason: BH(8-31-2013)
[2013/8/31 - 11:36:49] AdmCmd: Damian Santos was fined $5000 by Scott Parker, reason: UNRP driving(8-31-2013)

罰金を科された人、釈放された人、投獄された人の名前を一致させる必要があります。私はすでにこれのパターンを持っています:

[A-Za-z ]+(?=was|has)

これらのアクションのいずれかを発行した人の名前が必要です (各文の末尾近くの名前)。パターンを取得しようとしましたが、「by」という単語を除外できません。

(?=by)[A-Za-z ]+(?=,)

理由(日付なし) と dateパターンは試しませんでした。どちらも最後にあります。素敵なパターンできれいにカットする必要があります。

助けていただければ幸いです。

ありがとうございました。

4

2 に答える 2

0

「by」を除外するには、肯定的な後読みを使用する必要があるため、を に変更(?=by)します(?<=by)

そのため、これと同じ方法を使用し、(?<=reason:)その後に正規表現を使用して、BH または予想されるコードを一致させることができます。

最後になりましたが、行末の括弧の「間」の日付を取得するのは難しくありません。あなたは正しい軌道に乗っているようです。問題なく仕上げることができます。

于 2013-09-10T18:01:53.957 に答える
0

パターンを取得しようとしましたが、「by」という単語を除外できません。

肯定的な先読みの代わりに肯定的な先読みを使用します。

(?<=by )[A-Za-z ]+(?=,)

ワーキングデモ

于 2013-09-10T18:00:22.573 に答える