Regex Matlab:计算URL中的点数

Regex Matlab:计算URL中的点数,regex,matlab,Regex,Matlab,下面是我计算URL中点数的算法: 1) 在matlab编辑器中输入完整的URL 2) 删除后面的路径,然后离开URL的域部分 3) 检查URL的域部分中“.”/点的数量 4) 如果URL的域部分中的“.”/点等于或大于3,则返回1,否则如果介于1和3之间,则返回0,否则返回-1 str = {'http://www.math-works.com/help/images/removing-noise-from-images.html'; 'https://www.math.works.

下面是我计算URL中点数的算法: 1) 在matlab编辑器中输入完整的URL 2) 删除后面的路径,然后离开URL的域部分 3) 检查URL的域部分中“.”/点的数量 4) 如果URL的域部分中的“.”/点等于或大于3,则返回1,否则如果介于1和3之间,则返回0,否则返回-1

str = {'http://www.math-works.com/help/images/removing-noise-from-images.html';
      'https://www.math.works.com/help/matlab/ref/strcmpi@dfvfv.html';
      'google.com/voice';
      'http://m.o.n.k.e.y.org/';
      'stack.overflow.com/';
      'meta.stackoverflow.com'};

out = regexp(str,'.*?[^/](?=(/([^/]|$)|$))','match','once')

A = {'.'};

cellfun('.'(n) ~isempty(n), strfind(out, A{1}))>1

我已经解决了以下问题:1)在matlab编辑器中输入完整的URL;2)消除后面的路径,然后留下URL的域部分;3)检查URL的域部分中“.”/点的数量,但现在有问题:4)如果URL的域部分中的“.”/点等于或大于3,则返回1,否则如果介于1和3之间,则返回0,否则返回-1

您只需使用正确的
cellfun
命令即可获得答案

str = {'http://www.math-works.com/help/images/removing-noise-from-images.html';
      'https://www.math.works.com/help/matlab/ref/strcmpi@dfvfv.html';
      'google.com/voice';
      'http://m.o.n.k.e.y.org/';
      'stack.overflow.com/';
      'meta.stackoverflow.com'};

out = regexp(str,'.*?[^/](?=(/([^/]|$)|$))','match','once')

A = {'.'};

cellfun('.'(n) ~isempty(n), strfind(out, A{1}))>1
str = {'http://www.math-works.com/help/images/removing-noise-from-images.html';
  'https://www.math.works.com/help/matlab/ref/strcmpi@dfvfv.html';
  'google.com/voice';
  'http://m.o.n.k.e.y.org/';
  'stack.overflow.com/';
  'meta.stackoverflow.com'};

out = regexp(str,'.*?[^/](?=(/([^/]|$)|$))','match','once')
A=cellfun(@(x) length(strfind(x,'.')), out);
B=-1*ones(length(A),1);
B(A>=3)=1;
B(A==2)=0;  %I am assuming between 1 to 3 is equal to 2.

实际上,您可以编写一个函数,从a创建B,然后将该函数包含在
cellfun
中,以直接获得
B

那么问题是什么呢?我得到了一个错误,“???错误:File:f5.m行:16列:14个不平衡或意外的括号或括号。“我在计算“.”的数量方面有问题,/dots和if-else语句试试这个,
cellfun(@(n)(~isempty(n)),strfind(out,A{1}))>1
检查if-else语句怎么样,“如果URL的域部分中的“.”点等于或大于3,则返回1,如果1和3之间的“.”点返回0,则返回-1“为什么我无法获得条件的“1”、“0”和“-1”的输出。B(A>=3)=1;B(A==2)=0;B(A你应该得到。从上面的代码中,我得到了
B=[01-1010]
哦,是的,它在变量编辑器中显示我,如果我想在命令窗口中显示结果如何?我的命令窗口仅显示:out=''''''google.com''''stack.overflow.com''meta.stackoverflow.com'