我对正则表达式有疑问。正如过去的问题所述,我正在进行半完整地址解析。
在一个区域,我正在检查地址中是否有太多方向。我只检查缩短的形式,如N,E,S,W,NE,NW,SE,SW。我当前的表达式确实有效,但我想要一些不同的东西,以便更好地适应代码的其余部分。
REGEXP_COUNT(ADRS, '(\s|^)' || DIRN || '(\s|$)', 1, 'i')
我想使用"N E S W"
但我知道在String MyString= driver.findElement(By.xpath("//div[@class='breadcrumb']")).getText();
//get all child nodes of div parent class
List<WebElement> ele= driver.findElements(By.xpath("//div[@class='breadcrumb']/child::*"));
for(WebElement i:ele) {
//substracing a text of child node from parent node text
MyString= MyString.substring(i.getText().length(), MyString.length());
//removing white spaces
MyString=MyString.trim();
}
System.out.println(MyString);
这样的情况下它不会正确计算。在这种情况下,计数将是2.我知道这是因为N和E之间的空间被认为是N情况的一部分,所以它继续&#34; E S&#34;它并不认为E是线的起点,而且已经占用了空间。
现在改变它以计算所有4个很容易,但是它不适用于&#34; North Albert S&#34;当我只想要1时,计数是3。
我想要的表达类型是什么?如果是它会是什么?
答案 0 :(得分:0)
Oracle不支持\b
进行字边界匹配。
最简单的方法是用两个空格字符替换每一行空白字符,然后使用正则表达式进行匹配:
REGEXP_COUNT(
REGEXP_REPLACE( ADRS, '\s+', ' ' ),
'(\s|^)' || DIRN || '(\s|$)',
1,
'i'
)