Version reguläre Ausdrücke in CMake
Möchte ich validieren Sie vom Benutzer angegebene version-string, der - um sicherzustellen, dass es besteht aus drei Punkten getrennten zahlen (e.g. 1.20.300
).
Ich bin mir aber nicht sicher, wie Sie Sie zu schreiben, wie regex, der code unten ist nur ein Versuch:
if( PROJECT_VERSION MATCHES "([0-9]+).([0-9]+).([0-9+])" )
message( "NOTE: Valid version string" )
else()
message( FATAL_ERROR "Invalid version string" )
endif()
So, wie Sie richtig schreiben erforderlich regex?
Danke.
UPD
Mein regex passt auch 1.2.3.4
, aber sollte nicht!
Nur drei Punkten getrennten zahlen sind möglich.
- versuchen
"^([0-9]+)[.]([0-9]+)[.]([0-9]+)$"
- Es passt auch
1.2.3.4
string, zum Beispiel. Aber sollte nicht!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Punkte sind spezielle regex, so sollten Sie sich entfliehen Sie:
Warum Doppel-backslash? Siehe hier: https://stackoverflow.com/a/4490920/4323
^
und$
? Auch ich kann immer noch nicht verstehen, was die regex-syntax Dialekt CMake unterstützt. E. g. es gibt keine\d
(beliebige Ziffer) Betreiber hier^
und$
bedeutet "Anfang" und "Ende" der Schnur jeweils. Dies verhindert, dass das matching Müll wie abc1.2.3 xyz.