据我所知,xanatos的答案是正确的。我试着去了解正则表达式,所以这里说到:
"[^"~]+"([^~]|$)
您可以测试我们的正则表达式,并在http://www.regexpal.com/
1.与单件起到更好的理解)单个字符
“
第一种模式是文字字符。由于没有相对立场的陈述,它可能发生在任何地方。
2.)在字符类
[^“〜]
下一个表达式是[] -bracket,这是一个字符集,它定义字符的数量,这可能会在下一步。它是一个单个字符的占位符。所以让我们看看里面,允许其内容:
^“〜
字符类的定义开始的插入符号(^),这是一个特殊字符,在打开方括号后键入一个插入符号将取消字符类别,因此它是“倒置的”:跟随的所有内容,与类别表达式不匹配,匹配且是有效字符。在这种情况下,每个字面字符都是可能的,除了两个被排除的字符:“或〜”。
3.)的特殊字符
+
下一个表达式,一个加号,告诉引擎尝试匹配前述令牌一次或多次。 所以定义的字符类应该重复一次或多次以匹配给定的表达式。
4.)单个字符
“
要匹配,表达式应该进一步含有一种进一步撇号,这将是对应于撇号1中的第一个),因为在字符类(2),因此(3)不允许一个撇号。
5.)一个环视
([^〜] | $)
这里要检查的第一个结构是()-bracket。这被称为“Lookaround”。 它是一种特殊的群体。 Lookaround匹配一个位置。它不扩展正则表达式匹配。 所以这意味着这部分不会尝试在表达式 中找到任何特定字符,而不是将它们本地化。
本地化需求有两个条件,它们通过管道符号进行逻辑OR连接: 因此,匹配表达式的下一个字符可以是 [^〜]所有类中的单个字符除了字符〜 或 $行末(或单词,如果不使用多行模式正则表达式引擎)
我会尝试编辑我的答案更好的格式,因为这是我的第一篇文章,我首先必须检查这是如何工作的..:)
更新: 以“检测”在该行的前/结束一个星/星,你必须做以下几点:
首先,它是一个特殊的角色,所以你有一个反斜杠转义:*
要定义的位置,你可以使用:
整体表现将是:
^*的表达在 开始寻找一个*前面的正则表达式的最后行$ *在终端需求的* 。
....你的情况,你可以在最后一个字符类中添加*检测到底有*:
([^〜] | $ | $ *)
,并强制*最后,删除其他条件:
($ *)
PS: (不知我的正则表达式是在格式化的发动机吞了,所以我的更新是错误的...)
是否[参考](http://www.regular-expressions.info/reference.html ) 帮帮我? – Corak