【问题标题】:How to convert "-?" from Perl Regex to c# regex如何转换“-?”从 Perl 正则表达式到 c# 正则表达式
【发布时间】:2012-03-29 02:47:32
【问题描述】:

我找不到有关此符号的任何文档。 “-”是什么意思?意思是什么时候它在括号表达式之前?

更新 - 我看到的例子是 WebIDL 规范中的整数和浮点正则表达式约束。这是语法附录的直接链接:http://dev.w3.org/2006/webapi/WebIDL/#idl-grammar

【问题讨论】:

  • 我想知道他是不是指例如(?-i:pattern)
  • @BoltClock,我已经发布了上下文/链接。
  • 这是一个可选的-,它的编写方式相同(意思相同)两种正则表达式。

标签: c# regex perl translation code-conversion


【解决方案1】:

«-?» 非常标准的意思是“匹配字符 «-» 零次或一次”。

$ perl -E'
   say "$_: ", /^aaa-?bbb\z/ ? "match" : "no match"
      for qw( aaabbb aaa-bbb aaa--bbb );
'
aaabbb: match
aaa-bbb: match
aaa--bbb: no match

如果它在 C# 中的工作方式不同,我会感到非常惊讶。

【讨论】:

  • C# 中的? 有类似的行为。但是,? 必须是出现在模式末尾的量词。我看到的 Perl 上下文的整个模式都以 -? 为前缀。
  • 我可以看到这对正则表达式有意义,我正在查看(即使作为前缀)。你有任何证明文件吗?
  • 嗯,你链接的正则表达式应该匹配数字;数字可能是也可能不是负数;负数以- 开头。因此,以-? 开头的模式来处理它是有意义的。这不是“前缀”,而是正常的正则表达式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多