- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这有点过分了,但是这个正则表达式 - "()"出现以下情况:当用于将字符串拆分为 string[] 数组时,结果对我来说有些奇怪。例如这行代码:
string[] res = new Regex("()").Split("hi!");
将 res
设置为 9 个 (!) 元素的数组:["","","h","","i","","!","", ""]
我希望它返回这 5 个元素:["h", "", "i", "", "!"].我需要这个特定结果的原因是为了与另一个正则表达式库兼容......
我的问题是,这种行为可能是由于正则表达式对象缺少某些选项或某些编码问题或类似问题......或者它以某种方式确定并且绝对是它应该工作的正确方式?另外,有没有办法强制它返回第二个(预期的)结果呢?
最佳答案
我已经使用 |
字符指出了您的正则表达式匹配的位置:“|h|i|!|”
Split 返回一个数组,其元素全部在两个相邻匹配项之间,或者在字符串开头和第一个匹配项之间,或者在最后一个匹配项和字符串结尾之间。它按照它们在字符串中出现的顺序返回它们。这给出了这个结果:["","h","i","!",""]
这解释了 9 个数组元素中的 5 个。
但是,“如果在 Regex.Split 表达式中使用捕获括号,则任何捕获的文本都将包含在生成的字符串数组中。” (直接引用自 msdn,此处:http://msdn.microsoft.com/en-us/library/ze12yx1d.aspx)
在这种情况下,捕获的文本是空字符串。因为我们有 4 个匹配项,所以这解释了结果中的其他 4 个元素。
因此,完整的结果是:["","","h","","i","","!","",""]
关于c# - 带有空组 "()"的正则表达式返回奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159771/
我有一个名为 FeedView 的 View ,由 FeedViewController 处理。 我还有一个名为“NearestStore”的 XIB,它由一个名为“NearestStoreViewC
我有一个警报表,其中 tr 元素是使用 JS 动态添加/删除的。问题是它有一个 border-top 将它与上面的内容分开,当表格为空时我想隐藏这些内容。我试过 :empty 和 display:no
我是一名优秀的程序员,十分优秀!