Ios 这两个正则表达式匹配什么?

Ios 这两个正则表达式匹配什么?,ios,regex,Ios,Regex,我想不出这个regex匹配什么: A:“\\/\\/c\\/(\\d*)” B:“\\/\\/(\\d*)” 我想他们是在匹配某种数字序列,因为\d匹配任何数字,但我想知道一个字符串的示例,它将与这个正则表达式匹配 模式语法由指定。表达式是在iOS应用程序中使用创建的,并且是正确的。第一个匹配的是//c/+0或更多数字。第二个匹配/+0或更多数字。这两个数字都被捕获。 a)的匹配示例是//c/123 B)的匹配示例是//12345 编辑:这个答案来自一个Java人。这是错误的,因为这实际上是一个

我想不出这个
regex
匹配什么:

A:
“\\/\\/c\\/(\\d*)”

B:
“\\/\\/(\\d*)”

我想他们是在匹配某种数字序列,因为
\d
匹配任何数字,但我想知道一个字符串的示例,它将与这个
正则表达式
匹配


模式语法由指定。表达式是在iOS应用程序中使用创建的,并且是正确的。

第一个匹配的是
//c/
+0或更多数字。第二个匹配
/
+0或更多数字。这两个数字都被捕获。

  • a)的匹配示例是
    //c/123
  • B)的匹配示例是
    //12345
    • 编辑:这个答案来自一个Java人。这是错误的,因为这实际上是一个C/C问题,直到得到答复后才清楚。查看下面的评论,不要投反对票。在我看来,它应该继续存在


      这个正则表达式匹配一个奇怪的字符序列,乍一看,它几乎像一个正则表达式,因为
      \d
      是一个数字,后跟一个星号(
      \d*
      )意味着零个或多个数字。但它不是一个数字,因为转义斜杠是转义的

      \\/\\/c\\/(\\d*)
      
      例如,这一个匹配以下文本:

      \/\/c\/\
      \/\/c\/\d
      \/\/c\/\dd
      \/\/c\/\ddd
      \/\/c\/\dddd
      \/\/c\/\ddddd
      \/\/c\/\dddddd
      ...    
      
      这个几乎一样

      \\/\\/(\\d*)
      
      除了从上述结果中删除
      c\/

      \/\/\
      \/\/\d
      \/\/\dd
      \/\/\ddd
      \/\/\dddd
      \/\/\ddddd
      \/\/\dddddd
      ...
      
      在这两种情况下,最后的
      \
      和可选的
      d
      都是[capture group][1]一个

      我的第一印象是这些正则表达式是用来转义Java字符串的,这意味着它们将完全无效。如果对Java字符串进行了转义,例如

      Pattern p = Pattern.compile("\\/\\/c\\/(\\d*)");
      
      它将无效,因为在取消转义后,它将导致此无效正则表达式:

      \/\/c\/(\d*)
      
      单个转义斜杠(
      \
      )无效。但是
      \d
      是有效的,因为它表示任何数字

      但是,我也不认为它们是无效的,它们不是为Java字符串转义的。他们只是很奇怪


      非常有趣。

      当我在Windows上使用模拟Bash的Cygwin时,我有时会遇到必须对转义字符进行转义的情况,我认为这使这个表达式看起来很奇怪。例如,当我使用sed查找单个'\'时,有时不得不将其写为'\\\'。(有趣的是,StackOverflow证明了我的观点。如果你在评论中写4个反斜杠,它只显示两个。因此,如果你再次处理它,它们可能会根据你的情况全部消失)

      考虑到这一点,如果您来自类似的情况,那么将成对的反斜杠视为仅代表一个可能会有所帮助。我猜你是。正因为如此,我想说埃里克·杜梅林克可能是正确的人选。这将捕获一系列数字,这些数字可能跟随或不跟随两个斜杠和一个c:

      //c/000


      //00000

      “ICU”指的是什么?@aliteralmind也许你可以随时学习正则表达式并找出它,第一个匹配
      \/\/c\/
      ,然后是(
      \​
      和零个或多个
      d
      )实例作为一个组。第二个是相同的,只是它与
      \/\/
      匹配,而不是
      \/\/c\/
      。添加语言和regex标记(Java、PCRE等)以及对ICU所指内容的解释。没有它们,你的帖子很难回答。我认为双“\”实际上是一个转义字符和一个反斜杠,就像你在C或C中使用的那样。(你有我一开始读的字面意思,直到看到匹配的文本毫无意义。我想Erik和John有。你是说这是C或C相当于
      Pattern p=Pattern.compile(\\/\\/C\\/(\\d*));
      ?我很确定是这样的。使用RegexBuddy生成的regex树,在每种情况下删除一个double\会使regex匹配的可能性更大。(不是向下投票,因为用户没有做任何澄清(比如添加所使用的语言)。)所以这是“错误的”,但我认为它应该留在这里(连同这些纠正性评论),因为其他非C/C的人可能会觉得它很有启发性。不要否决它,让我删除它,听到了吗?!(除了@KenWhite:)str1=
      “查找”{44}