Also im Grunde brauchen Sie Ziffernfolgen entsprechen, die durch einen Punkt oder eine andere Ziffer nicht vor- oder nachgeschaltet werden? Warum versuchst du das nicht einfach?
[TestCase("'((1/1000)*2375.50)'", new string[] { "1", "1000" })]
[TestCase("1", new string[] { "1" })]
[TestCase("1 2", new string[] { "1", "2" })]
[TestCase("123 345", new string[] { "123", "345" })]
[TestCase("123 3.5 345", new string[] { "123", "345" })]
[TestCase("123 3. 345", new string[] { "123", "345" })]
[TestCase("123 .5 345", new string[] { "123", "345" })]
[TestCase(".5-1", new string[] { "-1" })]
[TestCase("0.5-1", new string[] { "-1" })]
[TestCase("3.-1", new string[] { "-1" })]
public void Regex(string input, string[] expected)
{
Regex regex = new Regex(@"(?:(?<![.\d])|-)\d+(?![.\d])");
Assert.That(regex.Matches(input)
.Cast<Match>()
.Select(m => m.ToString())
.ToArray(),
Is.EqualTo(expected));
}
scheint zu funktionieren.
Sind alle Ihre Eingabezeichenfolgen im Format '((x/y) * z)'? – Chrono
@Chrono: Nein, das war nur eine Beispielzeichenfolge. Jede Zeichenfolge würde –