求一正则表达式

时间:2021-04-10 05:52:26
我想让一个字符串必须含有0个或多个"{N:整数}"这种字符串,其中N可以大写可以小写,整数就是任何整数
这个正则怎么写?

比如像这样的"xxx","xx-{N:3}","{N:43}-{n:9}-P","{N:X-0"这些是符合的
"x-{N:d}","{N:3e}","{n:3.2}"这就是不符合的

15 个解决方案

#1


"x-{N:d}"为什么不符合?它也包含 0个"{N:整数}"这种字符串

#2


因为d是字母不是整数啊

#3


前面XXX有没有限制

#4


引用 3 楼 Chinajiyong 的回复:
前面XXX有没有限制

{N:X-0这种又怎么符合?感觉规则不大明确

#5


string pattern= @"(?is)^((?!\{N:(?!\d+\})[^}]+\}).)*$";
其实你这个条件本身就有点矛盾。

#6


没有限制,就是字符串中如果含有"{N:*}"这样的部分那么*必须是整数,其他的所有部分不管什么字符都可以

#7


引用 5 楼 hjywyj 的回复:
string pattern= @"(?is)^((?!\{N:(?!\d+\})[^}]+\}).)*$";
其实你这个条件本身就有点矛盾。

矛盾在哪里?

#8


引用 4 楼 Chinajiyong 的回复:
引用 3 楼 Chinajiyong 的回复:前面XXX有没有限制
{N:X-0这种又怎么符合?感觉规则不大明确

因为{N:X-0没有匹配{N:*}这种模式,如果是{N:X-0}那就不符合了

#9


引用 8 楼 NaZiChong 的回复:
引用 4 楼 Chinajiyong 的回复:
引用 3 楼 Chinajiyong 的回复:前面XXX有没有限制
{N:X-0这种又怎么符合?感觉规则不大明确
因为{N:X-0没有匹配{N:*}这种模式,如果是{N:X-0}那就不符合了


{N:X-0没有匹配{N:*}这种模式,他“符合”
那{N:Xssss}也有匹配这种模式,他就不“符合”

你的这种模式验证匹配与不匹配的“符合”标准界定真是有点模糊了。
如上:
那怎么样的才叫一个完全的符合呢?

#10


引用 9 楼 nice_fish 的回复:
引用 8 楼 NaZiChong 的回复:引用 4 楼 Chinajiyong 的回复:
引用 3 楼 Chinajiyong 的回复:前面XXX有没有限制
{N:X-0这种又怎么符合?感觉规则不大明确
因为{N:X-0没有匹配{N:*}这种模式,如果是{N:X-0}那就不符合了

{N:X-0没有匹配{N:*}这种模式,他“符合”
那{N:Xssss}也有匹……


就是字符串中如果含有"{N:*}"这样的部分那么*必须是整数,如果这样的部分中的*不是整数那就不符合,
换句话说不符合的字符串就是包含"{N:*}"这样的部分,但是*不是整数,,如果那个字符串不包含这样的部分也是符合的

#11


要求:
一个字符串可以包含以下2个部分"{N:*}"和"{D:*}",其中字母N和D可以是小写的,如果包含{N:*}那么其中*必须为整数,如果包含{D:*}那么其中的*可以为任何长度的任何字符
  可以同时包含这2个部分,也可以多次包含某个部分,也可以不包含任何一个部分
 这个正则表达式怎么写?
 这2个部分可以不包含,如果包含就要满足上面的规则,怎么写?

#12


try this
(?i)(?<n>\{n:[+\-]?\d+\})|(?<d>\{d:[^{}]+\})

#13


引用 12 楼 wuyazhe 的回复:
try this
C# code?1(?i)(?<n>\{n:[+\-]?\d+\})|(?<d>\{d:[^{}]+\})


你这个如果不包含这2个部分就通不过了,
我要的是这2个部分可以不包含,如果包含就要满足上面的规则,怎么写?

#14


你规则有问题
这2个规则包含,则通过,否则你{N:U},这个算符合还是算不符合?

#15


http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

建议看看这个吧。很容易看懂的。

#1


"x-{N:d}"为什么不符合?它也包含 0个"{N:整数}"这种字符串

#2


因为d是字母不是整数啊

#3


前面XXX有没有限制

#4


引用 3 楼 Chinajiyong 的回复:
前面XXX有没有限制

{N:X-0这种又怎么符合?感觉规则不大明确

#5


string pattern= @"(?is)^((?!\{N:(?!\d+\})[^}]+\}).)*$";
其实你这个条件本身就有点矛盾。

#6


没有限制,就是字符串中如果含有"{N:*}"这样的部分那么*必须是整数,其他的所有部分不管什么字符都可以

#7


引用 5 楼 hjywyj 的回复:
string pattern= @"(?is)^((?!\{N:(?!\d+\})[^}]+\}).)*$";
其实你这个条件本身就有点矛盾。

矛盾在哪里?

#8


引用 4 楼 Chinajiyong 的回复:
引用 3 楼 Chinajiyong 的回复:前面XXX有没有限制
{N:X-0这种又怎么符合?感觉规则不大明确

因为{N:X-0没有匹配{N:*}这种模式,如果是{N:X-0}那就不符合了

#9


引用 8 楼 NaZiChong 的回复:
引用 4 楼 Chinajiyong 的回复:
引用 3 楼 Chinajiyong 的回复:前面XXX有没有限制
{N:X-0这种又怎么符合?感觉规则不大明确
因为{N:X-0没有匹配{N:*}这种模式,如果是{N:X-0}那就不符合了


{N:X-0没有匹配{N:*}这种模式,他“符合”
那{N:Xssss}也有匹配这种模式,他就不“符合”

你的这种模式验证匹配与不匹配的“符合”标准界定真是有点模糊了。
如上:
那怎么样的才叫一个完全的符合呢?

#10


引用 9 楼 nice_fish 的回复:
引用 8 楼 NaZiChong 的回复:引用 4 楼 Chinajiyong 的回复:
引用 3 楼 Chinajiyong 的回复:前面XXX有没有限制
{N:X-0这种又怎么符合?感觉规则不大明确
因为{N:X-0没有匹配{N:*}这种模式,如果是{N:X-0}那就不符合了

{N:X-0没有匹配{N:*}这种模式,他“符合”
那{N:Xssss}也有匹……


就是字符串中如果含有"{N:*}"这样的部分那么*必须是整数,如果这样的部分中的*不是整数那就不符合,
换句话说不符合的字符串就是包含"{N:*}"这样的部分,但是*不是整数,,如果那个字符串不包含这样的部分也是符合的

#11


要求:
一个字符串可以包含以下2个部分"{N:*}"和"{D:*}",其中字母N和D可以是小写的,如果包含{N:*}那么其中*必须为整数,如果包含{D:*}那么其中的*可以为任何长度的任何字符
  可以同时包含这2个部分,也可以多次包含某个部分,也可以不包含任何一个部分
 这个正则表达式怎么写?
 这2个部分可以不包含,如果包含就要满足上面的规则,怎么写?

#12


try this
(?i)(?<n>\{n:[+\-]?\d+\})|(?<d>\{d:[^{}]+\})

#13


引用 12 楼 wuyazhe 的回复:
try this
C# code?1(?i)(?<n>\{n:[+\-]?\d+\})|(?<d>\{d:[^{}]+\})


你这个如果不包含这2个部分就通不过了,
我要的是这2个部分可以不包含,如果包含就要满足上面的规则,怎么写?

#14


你规则有问题
这2个规则包含,则通过,否则你{N:U},这个算符合还是算不符合?

#15


http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

建议看看这个吧。很容易看懂的。