Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex to get one character not followed with digit

Tags:

c#

regex

How can I get first character if not have int inside:

I need to look all the place have '[' without integer after.

For example:

[abc] pass
[cxvjk234] pass
[123] fail

Right now, I have this:

((([[])([^0-9])))

It gets the first 2 characters while I need only one.

like image 387
Eliad Ayehu Avatar asked Oct 26 '25 14:10

Eliad Ayehu


1 Answers

In general, to match some pattern not followed with a digit, you need to add a (?!\d) / (?![0-9]) negative lookahead to the expression:

\[(?!\d)
\[(?![0-9])
  ^^^^^^^^^

See the regex demo. This matches any [ symbol that is not immediately followed with a digit.


Your current regex pattern is overloaded with capturing groups, and if we remove those redundant ones, it looks like (\[)([^0-9]) - it matches a [ and then a char other than an ASCII digit.

You may use

(?<=\[)\D

or (if you want to only match the ASCII digits with the pattern only)

(?<=\[)[^0-9]

See the regex demo

Details:

  • (?<=\[) - a positive lookbehind requiring a [ (but not consuming the [ char, i.e. not returning it as part of the match value) before...
  • \D / [^0-9] - a non-digit. NOTE: to only negate ASCII digits, you may use \D with the RegexOptions.ECMAScript flag.
like image 106
Wiktor Stribiżew Avatar answered Oct 29 '25 03:10

Wiktor Stribiżew



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!