2017-05-08 1 views
0

자바에서 정규식을 사용하여 특수 문자 사이의 문자열을 가져옵니다 '@function'과 '@'사이에서 텍스트를 가져 옵니까? 위해서는내가 입력 문자열에 대해 "@function"와 "@"사이의 문자열을 얻기 위해 노력하고

제 (자바) 다음

Pattern p = Pattern.compile(some magic regex expression...); 
Matcher m = p.matcher(inputText); 
functionName = m.group; 
System.out.println(functionName); 

는 "광장"인쇄

+0

그것은'될 것 @의 function' 트림에 추가 '@ '이 아닌 글자가 더 많습니다. 패턴 용 JavaDocs는 문자 클래스에 대해 설명합니다. https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html – yshavit

답변

3

정규식 :

@function(.*?)@

이 첫 번째로 "광장"배치해야합니다 캡처 그룹. 그런 다음 Matcher.group(int)을 사용하여 해당 그룹을 잡을 수 있습니다. 아래의 코드와 같이 : 전회의 매치 조작으로 지정된 그룹에 의해 전방 참조 된 입력 부분 순서를 돌려

functionName = m.group(1);

그룹 (INT 그룹).

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#group(int)

편집

는 0 다음, '\ s는'공백

https://regex101.com/r/PH54FV/1

+0

예외가 발생합니다. "스레드"main "java의 예외 .lang.IllegalStateException : 일치하는 항목이 없습니다. \t at java.util.regex.Matcher.group (Matcher.java:485) "이유가 확실하지 않습니다. – user2836816

+0

'if (m.find()) {.... m.group (1) ...}' –

+0

공백 이스케이프의 백 슬래시는 스스로 이스케이프 처리해야합니다. 어떤 혼란을 완화하기 위해 그들을 제거했습니다. – quackenator

관련 문제