C # регулярное выражение для ассемблера шестнадцатеричных чисел - PullRequest
2 голосов
/ 22 октября 2011

Я новичок в regex и хочу выделить шестнадцатеричные числа в стиле Assembly.Например:

$ 00
$ FF
$ 1234
($ 00)
($ 00, x)
и даже шестнадцатеричные числа, начинающиеся с #.

До сих пор я писал «$ [A-Fa-f0-9] +», чтобы увидеть, выделяет ли он числа, начинающиеся с $, но это не так.Зачем?И может ли кто-нибудь помочь мне с тем, что я делаю?Благодаря.

Ответы [ 2 ]

4 голосов
/ 22 октября 2011

Поставьте обратную косую черту перед $, и ваше регулярное выражение будет работать так

\$[A-Fa-f0-9]+

$ - допустимый символ регулярного выражения, который совпадает с концом строки. Так что, если ваш паттерн содержит доллар, вам нужно его избежать. Подробнее см. справочник по регулярным выражениям

1 голос
/ 22 октября 2011

Это должно охватывать все те случаи, в том числе случаи, когда вы получаете # вместо $

public Regex MyRegex = new Regex(
          "^(\\()?[\\$#][0-9a-fA-F]+(,x)?(?(1)\\))[\\s]*$",
        RegexOptions.Singleline
        | RegexOptions.Compiled
        );

Последовательность без экранирования для одной строки: ^(\()?[\$#][0-9a-fA-F]+(,x)?(?(1)\))[\s]*$

Тодолжен проверяться на соответствие каждой строке.

Кстати, я сделал это регулярное выражение довольно быстро, используя Expresso

...