我已经在我的Android应用程序中添加了表情符号,并且一直在使用Java中的正则表达式,所以分配给它们的代码将匹配正则表达式(其中包含要用于的一对分隔符),使字符显示为图像。
例如,一些表情符号代码是"sad"、"happy"、"smile"等。
到目前为止,它是这样的:
- 分隔符:(和) - 正则表达式:\(([.[^\(\)]]+)\) - 匹配的表情符号代码示例:(sad)、(happy)、(smile)
我注意到,对于我添加的一些新表情符号,用户使用另一对分隔符——如字母z和逗号来输入它们的代码会更实用。那么,第二种情况会像这样:
- 分隔符:z和, - 正则表达式:z([.[^z\\,]]+)\, - 匹配的表情符号代码示例:zsad,zhappy,zsmile 因此,我想把这两个正则表达式合并起来,这样用户就可以使用任意一对分隔符来输入表情符号代码,无论他或她喜欢哪一个,都可以匹配上。例如,每次写成"(sad)"或"zsad,"时,“sad”表情符号都会匹配并显示为图像,就像这样:
Hi. (sad) I've got bad news. zsad, Hey... (sad) Okay. Bye. zsad,
我尝试使用选择运算符和向前查看,但没有成功。在以下两个正则表达式中,我只匹配了选择器"|"左侧的内容(当然我希望能够匹配左右两侧的内容):
- \(([.[^\(\)]]+)\)|z([.[^z\\,]]+)\,
- z([.[^z\\,]]+)\,|\(([.[^\(\)]]+)\)
而在以下正则表达式中,我根本没有找到匹配项:
例如,一些表情符号代码是"sad"、"happy"、"smile"等。
到目前为止,它是这样的:
- 分隔符:(和) - 正则表达式:\(([.[^\(\)]]+)\) - 匹配的表情符号代码示例:(sad)、(happy)、(smile)
我注意到,对于我添加的一些新表情符号,用户使用另一对分隔符——如字母z和逗号来输入它们的代码会更实用。那么,第二种情况会像这样:
- 分隔符:z和, - 正则表达式:z([.[^z\\,]]+)\, - 匹配的表情符号代码示例:zsad,zhappy,zsmile 因此,我想把这两个正则表达式合并起来,这样用户就可以使用任意一对分隔符来输入表情符号代码,无论他或她喜欢哪一个,都可以匹配上。例如,每次写成"(sad)"或"zsad,"时,“sad”表情符号都会匹配并显示为图像,就像这样:
Hi. (sad) I've got bad news. zsad, Hey... (sad) Okay. Bye. zsad,
我尝试使用选择运算符和向前查看,但没有成功。在以下两个正则表达式中,我只匹配了选择器"|"左侧的内容(当然我希望能够匹配左右两侧的内容):
- \(([.[^\(\)]]+)\)|z([.[^z\\,]]+)\,
- z([.[^z\\,]]+)\,|\(([.[^\(\)]]+)\)
而在以下正则表达式中,我根本没有找到匹配项:
(\\(([.[^\\(\\)]]+)\\)|z([.[^z\\,]]+)\\,)
,(\\(([.[^\\(\\)]]+)\\))|(z([.[^z\\,]]+)\\,)
(z([.[^z\\,]]+)\\,|\\(([.[^\\(\\)]]+)\\))
,(z([.[^z\\,]]+)\\,)|(\\(([.[^\\(\\)]]+)\\))
\\(|z([.[^\\(\\z\\,)]]+)\\)|\\,
,(\\(|z)([.[^\\(\\z\\,)]]+)(\\)|\\,)
(\\()|(z)([.[^\\(\\z\\,)]]+)(\\))|(\\,)
(?=\\(([.[^\\(\\)]]+)\\))(?=z([.[^z\\,]]+)\\,)
,(?=.*\\(([.[^\\(\\)]]+)\\))(?=.*z([.[^z\\,]]+)\\,)
\(([.[^()]]+)\)|z([.[^z,]]+),
(当然,在Java中要将反斜杠加倍,这可以在在线Java正则表达式测试器中使用)。请查看此演示。 - Wiktor Stribiżew