簡體   English   中英

如何匹配正則表達式中的所有字母?

[英]How to match all letters in Regex?

我有一個幫助程序,它會屏蔽一些字符串,然后在請求/響應記錄器上將其另存為xml。 當我在環境中進行測試時,一切正常,但是由於XML的命名空間,當其他客戶端開始測試時,我遇到了一些問題。 這是我的正則表達式:

formatedString = Regex.Replace( formatedString , "<c.HeresMyString>[0-14]+([0-14]{8})</c.HeresMyString>" , "<c.HeresMyString>****************$1</c.HeresMyString>" , RegexOptions.IgnoreCase );

問題是,如果客戶端更改了,標記的名稱空間也將更改。 因此,我需要匹配eveything而不是<c.HeresMyString></c.HeresMyString> 類似於<**HeresMyString></**HeresMyString>

編輯:示例工作。 但是我只想替換xml標記的內容,這部分恰好是[0-14]+([0-14]{8}) 我想保留與原始字符串相同的標簽部分,而不是替代我的名稱空間。

我怎樣才能做到這一點?

我想你想要這樣的東西

formatedString = Regex.Replace( formatedString , "<[^<>]*HeresMyString>[0-14]+([0-14]{8})</[^\/]*HeresMyString>" , "<c.HeresMyString>****************$1</b.HeresMyString>" , RegexOptions.IgnoreCase );

用正則表達式處理XML和/或HTML是一種固有的中斷設計。 此修復程序可能會給您帶來更多的里程,但是要預測它將來會如何運行幾乎是不可能的,(最好)是一個脆弱的解決方案。

使用平台中可用XML工具 正確構建XML文檔並避免這種廢話。

我不確定我是否正確理解您的名字,但是如果您只是想讓它適用於原始字符串中的任何名稱空間,請為您的名稱空間使用.+模式:

using System;
using System.Text.RegularExpressions;       

public class Program
{
    public static void Main()
    {
        // Your string
        var formatedString = "<newNameSpace.HeresMyString>100000000000</newNameSpace.HeresMyString>";
        formatedString = Regex.Replace( formatedString , "<.+HeresMyString>[0-14]+([0-14]{8})</.+HeresMyString>" , "<b.HeresMyString>****************$1</b.HeresMyString>" , RegexOptions.IgnoreCase );


        Console.WriteLine(formatedString);
    }
}

這是一個工作示例,並提供有關正則表達式的簡單參考http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM