Java 杨:负前瞻等价物?

Java 杨:负前瞻等价物?,java,regex,Java,Regex,我编写了以下正则表达式 (?!.[$][(]).*. 此正则表达式用于拒绝任何包含$()的字符串(如果该字符串包含$或(),则该字符串将是有效的)。无论如何,此解决方案使用java工作,但我需要另一个不使用yang的?!(负前瞻)的解决方案 此链接显示了如何使用正则表达式,您可以使用正则表达式 ([^$]|[$]+[^($])*[$]* 仅当它后跟字符串结尾或除以外的其他内容时,才与$匹配(我的方法看起来有点复杂: ^([^$]+?|[^(]+?|.*?(?:\$[^(][^\$]*?))$

我编写了以下正则表达式

(?!.[$][(]).*.
此正则表达式用于拒绝任何包含
$(
)的字符串(如果该字符串包含
$
),则该字符串将是有效的)。无论如何,此解决方案使用java工作,但我需要另一个不使用yang的
?!
(负前瞻)的解决方案

此链接显示了如何使用正则表达式,您可以使用正则表达式

([^$]|[$]+[^($])*[$]*

仅当它后跟字符串结尾或除
以外的其他内容时,才与
$
匹配(

我的方法看起来有点复杂:

^([^$]+?|[^(]+?|.*?(?:\$[^(][^\$]*?))$

这里使用的不是负向后看,而是负向前看。负向后看是
(?。不包含
$的字符串的Java正则表达式(
(?)^(?。*[$][(])).*$
。为什么不需要负前瞻?
?!
不是负前瞻;而是负前瞻。为什么需要避免负前瞻?@Thomas或更好(更快):
布尔有效=(string.indexOf($(“”==-1)
@DaoudShaheen如果不是Java,那你为什么要设置这个标签?谢谢,你的解决方案是用Java,但不是用Yang。它给了我一个坏模式异常。这个链接将帮助你如何使用正则表达式。Yang@DaoudShaheen:编辑了答案。新版本有效吗?非常感谢,它有效,但如果我想添加一个新的c将字符添加到筛选器中,例如“a”,因此我想按$进行筛选(或a,如何进行筛选)。我尝试添加(([^$]|[$]+[^($])([^a]))*$但它不起作用。你知道吗?如果字符串中不能出现
a
,则需要将其从可能出现的每个字符组中删除,即从本例中的每个负字符组中删除:
([^a$]|[$]+[^a($])*[$]*