java의 문자열에서 "#"기호로 시작하는 첫 번째 단어 만 찾고 싶습니다. 기호와 단어 사이에는 공백이 없어야합니다.특수 문자에서 첫 번째 단어 시작 찾기
문자열로 출력을하여야한다 "안녕 당신은 #이 #how있다"
내가 적절한 패턴을 찾을 수 없습니다 아직 정규식이 시도하지만 어떻게. 이것 좀 도와주세요.
감사합니다.
java의 문자열에서 "#"기호로 시작하는 첫 번째 단어 만 찾고 싶습니다. 기호와 단어 사이에는 공백이 없어야합니다.특수 문자에서 첫 번째 단어 시작 찾기
문자열로 출력을하여야한다 "안녕 당신은 #이 #how있다"
내가 적절한 패턴을 찾을 수 없습니다 아직 정규식이 시도하지만 어떻게. 이것 좀 도와주세요.
감사합니다.
시험해보기
replaceFirst("^.*?(#\\S+).*$", "$1");
정확하게는 아니지만 작동해야합니다.
문자열에 이러한 토큰이 있다고 가정합니다. 그렇지 않은 경우, 당신은 토큰을 추출하기 전에 정규식 일치하는지 여부를 확인 할 수 있습니다 :이 방법은 "sdfkhk#sdfhj sdf"
에 "#sdfhj"
일치하는 것으로
matches("^.*?(#\\S+).*$");
참고.
이 경우를 제외하려면 정규식을 "^.*?(?<= |^)(#\\S+).*$"
으로 수정할 수 있습니다.
replaceFirst ("^. *? (# \\ S +). * $", "$ 1"); 완벽하게 작동 .. 감사 nhahtdh. –
이 정규식 표현을 시도 할 수 있습니다 :
"[^a-zA-Z][\\S]+?[\\s]"
당신은 당신이 찾고있는 특정 문자가이 경우
"#[\\S]+?[\\s]"
'[/ S]'는'/'또는'S'와 일치하고'[^/S]'는 ** **' /'또는'S'. 공백이 아닌 문자와 일치 시키려고한다면'\ S]'또는'\ S' (더 나은)입니다. 그리고 Java 문자열 리터럴에서 백 슬래시 (\\ S "')를 이스케이프 처리해야합니다. –
@AlanMoore 당신은 절대적으로 맞습니다. 나는 PHP 컨텍스트에서 정규식을 사용하고 혼란 스러울 뿐이다. –
String str ="hi #how are # you";
if (str.contains("#")) {
int pos = str.indexOf("#");
while (str.charAt(pos + 1) == ' ')
pos++;
int last = str.indexOf(" ", pos + 1);
str = str.substring(pos + 1, last);
System.out.println(str);
}
else{
}
출력에 시작 해야할지하지 않는 : 방법
xx # xx가 잘못된 단어라고 가정합니다. (대신 m.group(2)
를 패턴에 "#(\\w+)"
및 m.group(1)
를 사용하지 않은 경우)이 나는 진정한 "ab cd#ef #gh"
결과를
String str ="ab cd#ef #gh";
Pattern pattern=Pattern.compile("(^|\\s)#(\\w+)");
Matcher m=pattern.matcher(str);
if(m.find())
System.out.println(m.group(2));
else
System.out.println("no match found");
시도 이잖아 ->gh
"#ab cd#ef #gh"
결과를 ->ab
당신은 무엇을하려고 했습니까? – TimK
다음 패턴 # [a-zA-z] –
에 대해 일치시켜보십시오. "ab cd # ef #gh"'의 결과는 무엇입니까? – Pshemo