【发布时间】:2013-01-11 05:42:39
【问题描述】:
这是我在 Objective C 中创建的正则表达式模式:
^\n?([#]{1,2}$|[*]{1,2}$|[0-9]{1,3}.$)
我要匹配:
- 以\n开头或为空
- 以 # 或 * 或 . 结尾。
- 如果以 .中间会有 1 位或 2 位或 3 位数字
- 如果以 # 或 * 结尾,则中间可能还有 1 个 # 或 *
我创建的正则表达式匹配 '\n1#' 这不是我想要的。 谁能帮我纠正这个?这是最快的吗?正则表达式会经常使用,所以我希望它尽可能快。
更新:
这是一个用于测试的示例字符串:
"\n#", "11*1", "1#", "a1.", "111*", "\n1#", "\n11.", "a11.", "1. ", "*1."
1# 和 111* 匹配。不知道出了什么问题。
【问题讨论】:
-
第 1 项“以 \n 开头或为空”不是没用吗?以 \n 开头的字符串只不过是一个空行。相反,只需在正则表达式的开头使用显式“^”搜索您要查找的字符串。它会稍微简化正则表达式。
-
@SlyRaskal 有道理,谢谢。你知道其余的有什么问题吗?
-
现在正在研究,不知道我的想法是否可行。
-
你能发布一些示例字符串来测试吗?
-
我认为您需要更具体地说明当 # 或 * 结尾时应该出现什么类型的字符。我认为这就是问题所在。是不是不应该有任何数字,但如果它以#或*结尾,它可以是任何其他字符?
标签: objective-c regex pattern-matching nsregularexpression