2016-07-28 3 views
1

これはC#で書かれています。私は頭を悩まされてきたが、これまで運がなかった。他の文字が前に付いていない文字列から2つの末尾の文字を削除する正規表現

ですから、例えば

123456BVC --> 123456BVC (keep the same) 
123456BV --> 123456 (remove trailing letters) 
12345V -- > 12345V (keep the same) 
12345 --> 12345 (keep the same) 
ABC123AB --> ABC123 (remove trailing letters) 

ことは何でも始めることができます。

私は@".*[a-zA-Z]{2}$"を試みたが、私はいつも彼らが存在しない場合は2つの末尾の文字を削除した文字列を返すと、別の文字で先行されないように、運

これは、C#ではありません。

Match result = Regex.Match(mystring, pattern); 
return result.Value; 
+0

"AB"の出力はどのようにする必要がありますか? – dotctor

+0

@dotctor:文字列の長さは、正規表現を実行する前に 'mystring.Length'でチェックできるので、無関係です。 –

答えて

0

あなた@".*[a-zA-Z]{2}$"正規表現は、文字列の末尾に任意の0+(できるだけ多く)改行以外の文字と2つのASCII文字に一致します。文脈をチェックしないので、その前に来るものに関係なく2文字が一致します。あなたは文字で先行していない最後の2つの文字に一致します正規表現必要

(?<!\p{L})\p{L}{2}$ 

this regex demoを参照してください。

詳細

  • (?<!\p{L}) - 手紙(\p{L})は現在位置の前に発見された場合、一致を失敗(あなたが唯一のASCII文字に対処したい場合は、[a-zA-Z]を使用することができます)
  • \p{L}{2} - 2文字
  • $ - 文字列の最後。 C#ので

、あなたはそれらの最後の2つの文字を削除するために探しているなら、あなたは、単にこれを行うことができます

var result = Regex.Replace(mystring, @"(?<!\p{L})\p{L}{2}$", string.Empty); 
+1

他の人には役に立たないと思われる特定の質問にスプーンフィードの回答を提供するのではなく、表現の内訳が良いでしょう –

+1

スプーンフィードの回答が何を意味するか分かりません、OPは正規表現OPを使用しました。私は私の答えの100%に説明を追加しています、私の答えはプロフィールで見てください。 –

+1

@WiktorStribiżewありがとうございました!魅力として働くテストケース:= "132456") "132456ACV" "132456AC"、ExpectedResult、ExpectedResult = "132456ACV") "ABC2D2DD"、ExpectedResult = "ABC2D2") "123456"、ExpectedResult = "123456") "1234AB" 、ExpectedResult = "1234") "1234A"、ExpectedResult = "1234A") – exevio

0

を使用します。

string result = Regex.Replace(originalString, @"[A-Za-z]{2}$", string.Empty); 

正規表現$に終わりを意味することを忘れないでください改行の前に入力または文字列を挿入します。

+0

また、この[[A-Za-z] {2} $ 'は2つの最終文字の前に来るものを説明しません。あなたが 'RegexOptions.Multiline'フラグを使用していないので、あなたのケースではない*または改行の前の文字列について*。 –

+0

私が理解しているように質問に基づいている必要はありません。 @exevioは、文字列であれば、削除された文字列の最後の2文字を削除します。私たちはそれを置き換えていないので、一致しないものに対処する必要はありませんし、何かを完全に間違えない限り、最後の2文字が文字かどうかは変わりません。 –

+0

* 123456BVC - > 123456BVC(同じままにしてください)*を参照してください。 [あなたの正規表現](https://regex101.com/r/cZ8yK2/1)は*同じ*を保持しません。 –

関連する問題