我需要检查是否匹配的括号出现在可能有表情符号的字符串中(如:)
或:(
)。例如,"(:)())()"
,"(abcd)()ghijk)((mnop)qert)"
我已使用模式"^[:\\(|:\\)]"
检查表情符号,"\\([^()]*\\)"
检查匹配的括号是否存在,但未检测到它们。我怎么能这样做?
答案 0 :(得分:1)
这个问题的真正简单的解决方案是计算括号,尽管扩展的正则表达式可以处理它,但尝试用正则表达式解决它是很困难的。这是一个简单算法的草图:
openParenthesisCount
设为0 (
增量openParenthesisCount
)
递减openParenthesisCount
,如果计数为负,则失败(关闭太多):
,则前瞻并跳过下一个字符(如果它是括号)(跳过表情符号)openParenthesisCount
为零=>成功HTH
答案 1 :(得分:0)
据我所知,你想要匹配一个字符串,当且仅当它包含匹配的括号时,忽略字符串中每次出现的“:)”和“:(”(如果有的话)。
所以,试试这个:
^((?!:).)*\(.*(?<!:)\).*
它将匹配以下字符串:
但不符合以下条件: