2016-07-05 4 views
0

Мне нужно использовать выражение соответствия регулярных выражений, чтобы найти часть имени файла.Regex, чтобы соответствовать части файла

например, имя файла ABC01-001-M-001_0.dwg

Мне нужно, чтобы соответствовать первой цифре после подчеркивания (это номер ревизии имени файла чертежа)

В этот случай с примером, который он будет соответствовать

Может ли кто-нибудь проконсультироваться с этим регулярным выражением?

Большое спасибо.

+0

Связанный: http://stackoverflow.com/questions/5491087/regex-replace-everything-after-underscore –

ответ

0

pushpraj ответ почти правильно. Я так понимаю, вы не хотите видеть символ подчеркивания.

поэтому (?<=_)(\d+) будет правильным выбором. (?<=_) говорит, что подчеркивание должно быть перед вашим желаемым рисунком, но не включено.

Демо: https://regex101.com/r/kH1nE2/2

+0

Там нет ничего плохого с его ответом! Вне '()' не фиксируется, а сопоставляется. Таким образом, '_()' означает соответствие подчеркиванию, но не захватывает. Посмотрите сами: http://www.phpliveregex.com/p/giu – Andreas

+0

Спасибо за вашу помощь отлично работает – JoJo

+0

@ Andreas О, это правда. Он объявляет группу захвата. До сих пор я думал об этом только для пограничных операторов. Спасибо, я научился. :) –

0

Я думаю, что это должно быть довольно просто.

_(\d) 

онлайн демо https://regex101.com/r/kH1nE2/1

в случае, если вы ожидаете больше цифр, вы можете использовать следующие

_(\d+) 

примечание "+", который будет соответствовать 1 или более цифр после подчеркивания

0

В в этом случае регулярное выражение даже не требуется.

$n = "ABC01-001-M-001_0.dwg"; 
Echo intval(explode("_", $n)[1]); // 0 

https://3v4l.org/fBXc5

Кажется, что вы ищете яваскрипт решение?

var n = "ABC01-001-M-001_0.dwg"; 
var int = parseInt(n.split("_")[1]); 

Не уверен, что это на самом деле работает, потому что я не делаю писать в JavaScript, но ^^ то, что я мог бы Google о функциях.
Возможно, работает, может быть, нет.

Это похоже на работу :-)
https://jsfiddle.net/w9x7d40f/

Смежные вопросы