我需要匹配"单词"以美元符号$
开头。
我尝试过以下正则表达式:
\b\$banana\b
但这会产生以下结果:
few words have$banana // match, but should not
few words have $banana // not match, but should
我无法理解为什么会这样。
我需要找到单词,所以第一种情况不必匹配,只有第二种情况必须匹配。我哪里错了?
我使用Java进行测试,但正则表达式必须独立于编程语言。
答案 0 :(得分:4)
使用“非单词边界”一词\B
:
\B\$banana\b
由于$
不是字词,因此您希望匹配$
之前的字符 而不是字char的位置;此正则表达式与foo$banana
不匹配,但会匹配foo $banana
。
见live demo显示
foo $banana bar (match)
foo$banana bar (no match)
foo $bananabar (no match)
答案 1 :(得分:1)
(?:^|(?<=\s))\$banana\b
这应该为你做。参见演示。
https://regex101.com/r/nB0bI6/1
由于\b
word boundary
,因此第一个$
的原因是CREATE TABLE transaction (
id INT NOT NULL,
accountnumber VARCHAR2(30) NOT NULL,
stmtvaluedate DATE NOT NULL
)
PARTITION BY RANGE (stmtvaluedate)
INTERVAL (NUMTOYMINTERVAL (1,'MONTH'))
( partition transaction_old values less than (to_date('01-JAN-2000','DD-MON-YYYY') ));
。