0

の '(' と ')' の間のコンテンツを一致させたい

Path()
Path(C:\...)

(?<=^Path\()(.*)(?=\))

Notepad++ では、'' <-- 長さゼロの一致および 'C:...' に一致します。ただし、Delphi XE3 を使用する場合:

if TRegEx.IsMatch(pDef, '(?<=^Path\()(.*)(?=\))') then begin

「C:\...」にのみ一致しますが、空の一致が必要です。

4

2 に答える 2

0

DelphiTRegExは、長さが 0 の一致をすべてスキップします。詳細については、 QC104562を参照してください。

プロパティからTPerlRegEx除外すると、正規表現は Delphi で機能します。preNotEmptyState

そうは言っても、ルックアラウンドを使用して正規表現一致の一部を分離しようとすると、正規表現が非効率になります。Path\(([^)\r\n]*)\)orのようなものを使用Path\((.*)\)して、最初のキャプチャ グループに一致するテキストを取得し、実際のパスを取得することをお勧めします。最初の正規表現は、同じ行にPath(...)追加)の文字がある場合に正しく一致しますが、文字を含むパスを正しく処理しません)

于 2013-09-21T00:38:37.530 に答える