私は広範囲に検索しますが、私はこれに簡単な答えが見つからず、Regexの経験は限られています。私は説明されている簡単な解決策に感謝します。Regexがマッチの任意の部分を食べさせないようにする
私は非常に長い文字列を持っていると私は次のように特定の単語を置換する必要があります。
例:あなたはそれが「LINK_ABC」作る文字列「LINK-ABC」を見つけるどこを。
私はRegex MatchとReplaceの文字列を書きました: @"LINK-ABC", @"LINK_ABC"
となりました。
しかし、私が認識していないことがいくつかありました。その上
LINK-ABC-DEF LINK-ABC-GHI JKL-...と: は、このようなファイル内の単語がある可能性があります。
だから私は(私が欲しいものされていない。これはそのまま残っているはず...)など、「LINK_ABC-DEF」を取得
私は私が本当に望んでいたことだったと思われた問題を実現したら、一致する単語のみを認識し、何か他のものと組み合わされている場合はそのまま残す。マッチワードでスペースや期間を確認すると、それはそうするはずです...
@"LINK-ABC[ |\\.]",@"LINK_ABC"
...今私は遭遇しました。
サンプル文字列:
リンク-XXXリンク-AAA-SSSリンク-XXX-BBBリンク-XXX-XXXリンク。
マッチ/文字列に置き換えます
link-xxx[ |\\.],link_xxx
結果文字列:
link_xxxlink-AAA-SSSリンク-XXX-BBB link_xxxlink_xxx
置換は正しいですが、末尾のカンマまたはピリオドが「腐った」ので、結果の文字列は間違っています。
私はそれがスペース上で一致する場合、スペースがあり、それが期間に一致する場合、交換には期間があるように一致する方法はありますか?私は2つの別々の試合を行うことができましたが、私はRegexの理解を深め、可能ならばもっとエレガントにしたいと思います。
あなたがmatchstring
の最後の部分の周りの括弧は、その中にマッチしたものは何でも保持されます、そして
fixstr
で
$1
が置き換えられます「キャプチャグループ」
var matchstring = @"link-xxx([ \.]|$)";
var fixstr = @"link_xxx$1";
であなたが望む動作を実現することができるはず
正規表現にする必要はありますか? – MrZander
また、これはPythonとは何が関係していますか? – MrZander
実際のコードとテスト文字列をフォーマットされたブロックに入れてください。私の古代の眼球は、インラインの不器用さを解読できません。 –