首页 新闻 赞助 找找看

正则表达式 匹配顺序问题

0
悬赏园豆:10 [已解决问题] 解决于 2016-11-07 15:35

规则:包含“有真相”不包含“无图”

如:无图adfadfdf有真相  不匹配

  有真相adfadfadf无图  不匹配

  adfadfad有真相asdfjaljda  匹配

 

如果在上面的规则再加上必须包含“有钱人”呢?

 

请教正则表达式怎么写

火悬崖的主页 火悬崖 | 菜鸟二级 | 园豆:434
提问于:2016-11-03 16:08
< >
分享
最佳答案
0

C#?Js?Java?DB?

 

收获园豆:3
~扎克伯格 | 小虾三级 |园豆:1923 | 2016-11-03 16:14

语言是:C#

火悬崖 | 园豆:434 (菜鸟二级) | 2016-11-03 16:15

@火悬崖: 

 1 public string ExactMatch(string input)
 2 {
 3    string result;
 4   bool contains = Regex.IsMatch(input, "有真相");
 5   bool contains1 = Regex.IsMatch(input, "无图");
 6   if (contains&&!contains1)
 7   {
 8      result = "匹配";
 9   }
10   else 
11   {
12     result = "不匹配";
13  }
14    return result;
15 }
16 
17  

 

写了个Demo看下是不是你想要的哈

~扎克伯格 | 园豆:1923 (小虾三级) | 2016-11-03 16:31

@~扎克伯格:你好 看了你的demo   发现我的问题描述有点问题  抱歉哈   问题描述已经修改了  还得麻烦你看下。

火悬崖 | 园豆:434 (菜鸟二级) | 2016-11-03 16:34

@火悬崖: 已更新Demo!您可以再看下,不谢

~扎克伯格 | 园豆:1923 (小虾三级) | 2016-11-03 16:44

@~扎克伯格: 能不能把“有真相”“无图”写成一个正则表达式呢

火悬崖 | 园豆:434 (菜鸟二级) | 2016-11-03 16:45

@火悬崖: 您好!正则表达式自身语法糖可以验证字母,数字,邮箱等是否合法!是不可以直接用正则表达式写特定的字符串的。

~扎克伯格 | 园豆:1923 (小虾三级) | 2016-11-03 16:56
其他回答(3)
0

你这个是字符串包含问题吧。能用正则吗?

收获园豆:3
授之以渔 | 园豆:1107 (小虾三级) | 2016-11-03 16:18

想用正则实现 ,目前还没有写出正则表达式。。。

支持(0) 反对(0) 火悬崖 | 园豆:434 (菜鸟二级) | 2016-11-03 16:19

@火悬崖: ^[^(无图)]*有真相[^(无图)]*$  这个试一下

支持(0) 反对(0) 授之以渔 | 园豆:1107 (小虾三级) | 2016-11-03 16:51

@授之以渔: 这个可以实现当前的问题  如果规则改成包含“有真相”“有钱人”不能包含“无图” 呢?

支持(0) 反对(0) 火悬崖 | 园豆:434 (菜鸟二级) | 2016-11-03 17:14

@火悬崖: 正则表达式是顺序匹配的。你只能把这几个字符串组合好几种类型,再连在一起的。其实你这个问题就不适合用正则,只需要使用字符串的包含函数处理就可以了。

支持(0) 反对(0) 授之以渔 | 园豆:1107 (小虾三级) | 2016-11-03 17:19
0

正则表达式支持中文吗?

收获园豆:1
悦光阴 | 园豆:2251 (老鸟四级) | 2016-11-04 11:29

是支持中文的

支持(0) 反对(0) 火悬崖 | 园豆:434 (菜鸟二级) | 2016-11-04 11:30

@火悬崖: 正则表达式不支持and

支持(0) 反对(0) 悦光阴 | 园豆:2251 (老鸟四级) | 2016-11-04 12:02

@悦光阴: 正则不支持and???

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2016-11-04 14:56

@Daniel Cai: 正则支持或,有and,或非的逻辑吗

支持(0) 反对(0) 悦光阴 | 园豆:2251 (老鸟四级) | 2016-11-04 16:38

@悦光阴: 正则中and不像or是显式,and是隐式支持的

(?=CONDITION1)(?=CONDITION2)

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2016-11-04 16:58

@Daniel Cai: 这个有先后顺序,可能我说的有歧义,无顺序的and是不支持的

支持(0) 反对(0) 悦光阴 | 园豆:2251 (老鸟四级) | 2016-11-04 17:14

@悦光阴: 

the quick brown fox jumps over the lazy dog

 (?=.*lazy)(?=.*fox).*

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2016-11-04 17:26
0

 

  1. Regex reg = new Regex("有真相(?!.+无图)");

  包含“有真相”“有钱人”不能包含“无图” 

  2. Regex reg = new Regex("(有真相(?!.+无图)|有钱人(?!.+无图))");

 

收获园豆:3
Blue_Dream | 园豆:140 (初学一级) | 2016-11-04 15:56

额 测试了一下 Regex reg = new Regex("(有真相(?!.+无图)|有钱人(?!.+无图))"); 这个不能用

“有钱人”“有真相”“无图”是没有顺序关系的

支持(0) 反对(0) 火悬崖 | 园豆:434 (菜鸟二级) | 2016-11-04 16:56

@火悬崖: 根据实际需求,变通一下就能用了。

支持(0) 反对(0) Blue_Dream | 园豆:140 (初学一级) | 2016-11-04 16:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册