わかりましたので、私は正規表現に新しいです、または少なくとも実際にそれらを書くために、しかし、ここで私が持っているものです。Regexは非キャプチャグループを返しますか?
文字列:
LDAP://CN=Doe\, John,OU=Users,DC=my,DC=domain
正規表現(予想通りそれが動作していません) :
(?:LDAP://CN=)([a-zA-Z]+\\?[,\s]?\s?[a-zA-Z]+)
グループが一致:
LDAP://CN=Doe\, Joe
Doe\, John
キャプチャGROをアップ:私は返すようにしたいどのような
LDAP://CN=Doe\, John
:
Doe, John
を(明らかに正しくない)私の理解では、私は私が撮影しグループのため?:
が含まれている場合、それは戻らないだろうという印象の下にありましたそれは試合で。同様に、名前の真ん中にある,
の前に\
を返すことは望ましくありません。実際に返された結果の文字を除外する方法はわかりません。誰かがその問題について何か光を照らすことができる?
[更新]私は結果が(ところで私が使用しているのPowerShell)次の操作を行っている得ることができた
:
$qryResult = "LDAP://CN=Doe\, John,OU=Users,DC=my,DC=domain"
[regex]$re = "LDAP://CN=(.*?),OU"
$result = $re.Match($qryResult)
(($result.Value -replace "LDAP://CN=","") -replace "\\","") -replace ",OU",""
しかし、それは素敵な最初から正規表現を使用するようになりそのようにテキストの置換を終了します。それが可能だ?
1回のマッチ操作で不連続なテキストを一致させることはできません。どのツール/言語を使用していますか? –
私はあなたがマッチした後に '' \ ''を削除する必要があるという点で運転しています。'LDAP:// CN =(。*?)、OU ='またはあなたの正規表現でグループ1のcapured値にしてください。 ? '非キャプチャグループを示す: –
はWiktorStribiż[email protected]私はあなたの他の質問に答えるためにはPerl 5の正規表現 –