2010-11-10 3 views
1

У меня есть регулярное выражение:C# регулярное выражение матч

\[IN\](\d+)\[/IN\] 

, который работает отлично подходит для:

...[IN]34[/IN]... 
...[IN]1[/IN]... 
...[IN]12[/IN]... 
etc 

Но это не совсем работает для десятичных знаков, IE:

...[IN]3.5[/IN]... 
...[IN]2.8[/IN]... 
...[IN]9.4[/IN]... 
etc 

Как сделать так, чтобы они соответствовали этим?

Спасибо!

+0

Может ли также быть экспонент ('1.4E-3')? –

+0

Нет простых цифр :) –

ответ

2

Из верхней части моей головы я думаю, что это должно быть так:

[IN](\d+\.?\d*)[/IN] 

EDIT: протестированы и исправленную версию:

\[IN\](\d+(\.\d+)?)\[\/IN\] 
2

Он не проверяет, если это действительно поплавок (есть одна десятичная точка):

([\d.]+) 
+0

Вы правы, отредактированы. благодаря –

0

Что-то вроде этого

[IN](\d+|\d+\.\d+)?[/IN] 

Это гарантирует, что у вас есть число после точки, если у вас есть точка.

2

Попробуйте это -

\[IN\]\d+(\.\d+)?\[/IN\] 
Смежные вопросы