Supponendo che il segnaposto $ 2 è popolata da un numero intero, è possibile incrementarlo da 1 ?:È possibile eseguire l'aggiunta in un Regex?
var strReplace = @"$2";
Regex.Replace(strInput, @"((.)*?)", strReplace);
Supponendo che il segnaposto $ 2 è popolata da un numero intero, è possibile incrementarlo da 1 ?:È possibile eseguire l'aggiunta in un Regex?
var strReplace = @"$2";
Regex.Replace(strInput, @"((.)*?)", strReplace);
È possibile utilizzare una versione di callback di Regex.Replace
con un MatchEvaluator
, si vedano gli esempi in:
Ecco un esempio (ideone):
using System;
using System.Text.RegularExpressions;
class Program
{
static string AddOne(string s)
{
return Regex.Replace(s, @"\d+", (match) =>
{
long num = 0;
long.TryParse(match.ToString(), out num);
return (num + 1).ToString();
});
}
static void Main()
{
Console.WriteLine(AddOne("hello 123!"));
Console.WriteLine(AddOne("bai bai 11"));
}
}
Uscita:
hello 124!
bai bai 12
In standard (CS teorica) le espressioni regolari, è impossibile con un'espressione regolare.
Tuttavia, Perl e tali hanno estensioni alle espressioni regolari, che ha implicazioni per il loro comportamento, e non ho abbastanza familiarità con loro per dire definitivamente che le regex estese non lo faranno, ma sono abbastanza sicuro che questo il comportamento non è possibile con una regex.
Perl: 's/\ d +/$ e + 1/eg' – Qtax
Non è possibile con un'espressione regolare standard, ma è possibile se si scrivere un MatchEvaluator personalizzato.
string str = "Today I have answered 0 questions on StackOverlow.";
string pattern = @"\w*?(\d)";
var result = Regex.Replace(str, pattern,
m => (int.Parse(m.Groups[0].Value)+1).ToString());
Console.WriteLine(result);
Oggi ho risposto a domande su 1 StackOverlow.
Se si utilizza Javascript quindi provare il seguito http://stackoverflow.com/questions/423107/use-regexp-to-match-a-parenthetical-number-then-increment-it – PraveenVenu