Need to construct a regular expression that counts numbers between alphabets.
schowalte3rguss77ie85 - 2
xyz1zyx - 1
x1y1z1 - 2
I have constructed this . But this doesn't work for case 3.
[[a-z] [0-9] [a-z]]*
Any help would be appreciated. Thanks in advance.
CodePudding user response:
If you want a count only, the last part should be a lookahead assertion.
If you want to also match uppercase chars, you can make the pattern case insensitive.
[a-z]\d (?=[a-z])
Explanation
[a-z]Match a single char a-z\dMatch 1 digits(?=[a-z])Positive lookahead, assert a char a-z to the right
CodePudding user response:
You can use
(?<=[^\W\d_])\d (?=[^\W\d_])
See the regex demo. If you want to only support ASCII letters, replace [^\W\d_] (that matches any Unicode letter) with [a-zA-Z].
Details:
(?<=[^\W\d_])- immediately before the current location, there must be a letter\d- one or more digits(?=[^\W\d_])- immediately after the current location, there must be a letter.
