ربما يلبي هذا Regex احتياجاتك:
\b(\d+)((?:\.\d+)+)\b
هذا regex يفصل تسلسل عدد صحيح رئيسي عن مكوناته الكسرية المتكررة.
(كما هو موضح في @shth ، يرجى مراعاة ذلك \d
مايو تطابق المزيد من الشخصيات مما تنوي. إذا كان هذا هو الحال ، فاستخدم فئة الأحرف [0-9]
بدلا من ذلك أو استخدم /a
المعدل.)
إليك برنامج Perl الذي يوضح هذا regex على مجموعة بيانات عينة. (انظر أيضا عرض حي.)
#!/usr/bin/perl -w
use strict;
use warnings;
while (<DATA>) {
chomp;
# A - A sequence of digits
# B - A period and a sequence of digits
# C - Repeat 'B'.
if (/\b(\d+)((?:\.\d+)+)\b/) {
# ^^^ ^^^^^
# A B
# ^^^^^^^
# C
print "[$1] [$2]\n";
}
}
__END__
1.23
123.456
1.2.3
1.22.333.444
الناتج المتوقع:
[1] [.23]
[123] [.456]
[3] [.2.3]
[4] [.22.333.444]