How to match these string: Ks 1
I have used this pattern ^((?!\*).)*$
!
Ks 1*, Zs 3v "6"
Ks 1 (/R)
Ks 1* Zs 3v "6"
Ks 1, (/R)*
The match that I want:
Ks 1 (/R)
Ks 1, (/R)*
CodePudding user response:
You can use
^(?!.*\d\*).*
^(?:(?!\d\*).)*$
See the .NET regex demo. Details:
^
- start of string(?!.*\d\*)
- a negative lookahead that fails the match if, immediately to the right of the current location, there are any zero or more chars other than a newline char as many as possible and then a digit and a*
char(?:(?!\d\*).)*
- a single char other than a newline char, zero or more but as many as possible occurrences, that does not start a digit*
char sequence.*
- the rest of the line.$
- end of string.
And if you plan to match Ks
and a number after it that has no *
right after, you can use
\bKs\s*\d \b(?!\*)
See the regex demo. Details:
\b
- a word boundaryKs
- a string\s*
- zero or more whitespaces\d
- one or more digits\b
- a word boundary(?!\*)
- a negative lookahead that fails the match if there is a*
immediately on the right.