RegExパターンのシンボルを使用して一致を検索したいが、置換したくない。これは、C#でのクラスと名前空間の操作用です。例えばRegEx - シンボルを使用して一致させるが置き換えない
:(注、唯一の "テスト" は、それが表示されたら取り替えるある
MyNamespaceLib.EntityDataModel.TestsMyClass+MyInnerClass
:
MyNamespaceLib.EntityDataModelTests.TestsMyClassTests+MyInnerClassTests
のように交換する必要があります最後に
私はマッチを見つけるのに最初の部分を取得することができましたが、置き換えられたマッチにシンボルを保持するために戦っています。
は、これまでのところ、私が持っている:
var input = "MyNamespaceLib.EntityDataModelTests.TestsMyClassTests+MyInnerClassTests";
var output = Regex.Replace(input, "Tests[.+]|$", "");
を私は非キャプチャグループを使用してみましたが、私はそれが私が道のためのものではないだ疑いそれを使用しようとしています。
ありがとうございます!
いいえ、反対ですが、本質的に "。"、 "+"または行末で終わるマッチを置き換えたいと思います。しかし、単語 "Tests"が名前空間またはクラス名の中に現れた場合、それは置き換えられてはなりません。 – Steve
@ user1927385: 'テスト(?![^。+])'、その後。 – Ryan
ニース、それは完璧に機能しました。 Regexで先読みを使ったことは一度もなかったので、もう少し詳しく読んでみましょう。ありがとうございましたminitech。 – Steve