Diese regex Frage ist eine Art Verlängerung des this questionJava regex - Quantifizierer in negativer Lookbehind
Eingangs
String input="first number <start number>123.45<end number>
and second number 678.90."
gewünschte Ausgangs
String output="first number <start number>123.45<end number>
and second number <start number>678.90<end number>."
Was habe ich versucht,
Ich habe einen negativen Lookback für <number start>
und einen negativen Look-Ahead für <number end>
:
String regex="(?<!(<number start>))\\d+(\\.\\d+)?(?!(<number end>))
// ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
// negative lookback negative lookahead
// ^^^^^^^^^^^^^
// float match
Aber das Problem ist, dass <number start>12.34<number end>
für einen String auf 2.3
Übereinstimmen.
Als ich quantifiers im Lookback enthalten bekomme ich einen Fehler
String regex="(?<!(<number start>\\d+))\\d+(\\.\\d+)?(?!(\\d+<number end>))
// ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
// negative lookback negative lookahead
// ^^^^^^^^^^^^^
// float match
Danke für die Hilfe!
Nur ['" (? ) \\ b \\ d + (?: \\. \\ d +)? \\ b (?!) "'] (https: // regex101 .com/r/6xTKBh/1) wird funktionieren. –
Erstens ist dies keine doppelte Frage. Zweitens hilft der vorgeschlagene Regex nicht. – l33t
@ l33t Erkläre, warum mein Vorschlag nicht hilft. Ich habe eine Regex-Demo zur Verfügung gestellt, die korrekt funktioniert: Die Regex stimmt nicht mit einer Zahl innerhalb von '' -Tags überein. –