Windows 7 SP1
MSVS 2010
Qt 4.8.4
我想突出显示以 1 个或多个连字符开头和/或以 1 个或多个连字符结尾的任何字符串(不是单词)。该字符串可能包含 Unicode,因此我需要使用字符集。
例如,这些应该突出显示(但不是周围的空白):
-word --word -&#$$ --&#$$
word- word-- &a$$- &a$$--
-word- --word-- -&a$$- --&a$$--
-word-word- --word--word--
不应突出显示没有外部连字符的嵌入式连字符字符串:
word-word word--word &#$$-&#$$ &#$$--&#$$
不应突出显示连字符字符串:
------- ---- -- ----
这:
1. QRegExp("-+[\\S]+|[\\S]+-+")
选择我想要突出显示的所有内容(不突出显示周围的空白),但也选择我不想突出显示的内容:连字符字符串和嵌入连字符字符串的第一部分(下划线):
word-word
-----
我相信这不会选择连字符字符串:
2. QRegExp("-+[\\S]-[-]]+|[\\S-[-]]+-+")
但不知道Qt是否支持字符类减法;这个表达式没有被选中。
因此,我的想法是创建单独的规则以随后取消突出显示这些字符串。
这将选择连字符字符串(然后我取消突出显示):
3. QRegExp("[\\s-+(?=\\s)|\\s-+$|^-+(?=\\s)|^-+$"")
我被困在如何处理嵌入的连字符字符串上。我认为后向断言会有所帮助,但它们不受支持。
我的问题: a)是否有一种简单的方法可以选择嵌入连字符字符串的第一部分,这样我就可以在不选择其他任何内容的情况下取消突出显示(没有其他副作用)?或 b) 最棒的是,在表达式 1 中是否有更好的方法来做到这一点。实现我的所有目标而不突出显示?