Zakładając zastępczy $ 2 zaludniony z liczbą całkowitą, to jest możliwe, aby zwiększyć ją o 1 ?:Czy można wykonać dodatek w regeksie?
var strReplace = @"$2";
Regex.Replace(strInput, @"((.)*?)", strReplace);
Zakładając zastępczy $ 2 zaludniony z liczbą całkowitą, to jest możliwe, aby zwiększyć ją o 1 ?:Czy można wykonać dodatek w regeksie?
var strReplace = @"$2";
Regex.Replace(strInput, @"((.)*?)", strReplace);
Można użyć wersji oddzwonienia z Regex.Replace
z MatchEvaluator
, patrz przykłady na:
Oto przykład (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"));
}
}
wyjściowa:
hello 124!
bai bai 12
w standardowych (CS teoretycznej) wyrażeń regularnych, jest to niemożliwe z wyrażenia regularnego.
Jednak Perl i takie mają rozszerzenia do wyrażeń regularnych, co ma wpływ na ich zachowanie, a ja nie jestem dostatecznie obeznany z nimi, aby zdecydowanie powiedzieć, że przedłużone wyrażenia tego nie zrobią, ale jestem dość pewny, że to zachowanie nie jest możliwe w przypadku wyrażenia regularnego.
Perl: 's/\ d +/$ & + 1/eg' – Qtax
To nie jest możliwe ze standardowym wyrażenia regularnego, ale można jeśli piszesz własny MatchEvaluator.
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);
Dziś mam odpowiedziało na pytania 1 StackOverlow.
Jeśli używasz Javascript następnie spróbuj poniżej http://stackoverflow.com/questions/423107/use-regexp-to-match-a-parenthetical-number-then-increment-it – PraveenVenu