![](/img/trans.png)
[英]Remove characters not in string variable as pattern in Regex.Replace
[英]Replace and remove a string via regex
這是我第一次使用正則表達式。
下面的字符串
var value ="abc ltd as yes"
需要更改為
var value ="abc Limited"
我有以下代碼:
public static string Attempt_Prefix_Removal( string prefix, string replacement, bool remove = false)
{
if (remove == true)
{
var yesy = $"(?<!prefix )" + prefix + ".*";
var test = Regex.Replace(prefix.ToLower(), $"(?<!prefix )" + prefix + ".*", replacement );
}
var output = (remove == true) ? Regex.Replace(prefix.ToLower(), $"(?<!prefix )" + prefix + ".*", replacement) : Regex.Replace(prefix.ToLower(), $"(?<!prefix )" + prefix + "", replacement);
return output;
}
傳遞給方法的值是
prefix ="ltd", replacement = "Limited" , remove = ture
運行代碼后,結果是
abc Limited as yes
我需要什么來改變得到的乘坐as yes
? 謝謝
private string regexOp(string sentence, string word, string wordtoReplace, bool isRemove)
{
var retValue = sentence;
if (isRemove)
{
var Pattern = "^.*?(?=" + word + ")";
Match result = Regex.Match(sentence, @Pattern);
if (!string.IsNullOrEmpty(result.Value))
retValue = result + wordtoReplace;
}
else
retValue = Regex.Replace(sentence, word, wordtoReplace);
return retValue;
}
嘗試這種方法,它將與您期望的動態效果一起使用,如果確實對您有所幫助,請不要忘記將其標記為答案,
您可以利用此代碼:
var prefix ="ltd"; var replacement = "Limited";
var pat = $@"(?s)(?<!\w){Regex.Escape(prefix)}(?!\w){remove ? ".*" : string.Empty}";
return Regex.Replace(val, pat, replacement.Replace("$", "$$"));
這里的要點是:
(?s)
-將允許.
匹配換行符(以防您在模式中使用.*
) (?<!\\w){Regex.Escape(prefix)}(?!\\w)
- (?<!\\w)
負向后搜索將失敗,如果當前位置前面有單詞char(您可以進一步(?<!\\w){Regex.Escape(prefix)}(?!\\w)
根據您的要求調整后向模式 {remove ? ".*" : string.Empty}
{remove ? ".*" : string.Empty}
-這將附加.*
(如果remove
為true )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.