2010-09-02 53 views
2

我有一個字符串"REC/LESS FEES/CODE/AU013423"RegEX:如何匹配未包圍的字符串

可能是什麼正則表達式匹配表達式"REC""AU013423"(任何沒有被斜線/包圍)

我使用/^>*/,它的工作原理和使用該內斜線的即字符串匹配,我能夠找到"/LESS FEES/CODE/",但我想否定此找到相反,即RECAU013423

需要幫助。謝謝

回答

2

如果你知道你只是在尋找字母數字數據,你可以使用正則表達式([A-Z0-9]+)/.*/([A-Z0-9]+)如果這匹配你會有兩個組包含第一個&最終文本字符串。

此代碼打印RECAU013423

final String s = "REC/LESS FEES/CODE/AU013423"; 
final Pattern regex = Pattern.compile("([A-Z0-9]+)/.*/([A-Z0-9]+)", Pattern.CASE_INSENSITIVE); 
final Matcher matcher = regex.matcher(s); 
if (matcher.matches()) { 
    System.out.println(matcher.group(1) + matcher.group(2)); 
} 

你可以調整正則表達式組的必要覆蓋有效字符

0
^[^/]+|[^/]+$ 

之前第一或字符串中的最後一個斜線之後匹配任何發生(或者如果沒有斜線存在,則爲整個字符串)。

遍歷字符串中的所有比賽中的Java:

Pattern regex = Pattern.compile("^[^/]+|[^/]+$"); 
Matcher regexMatcher = regex.matcher(subjectString); 
while (regexMatcher.find()) { 
    // matched text: regexMatcher.group() 
    // match start: regexMatcher.start() 
    // match end: regexMatcher.end() 
} 
1

這裏的另一種選擇:

String s = "REC/LESS FEES/CODE/AU013423"; 
String[] results = s.split("/.*/"); 
System.out.println(Arrays.toString(results)); 
// [REC, AU013423] 
相關問題