BibTeX 파일을 비롯하여 여러 소스에서 정보를 가져 오는 Scala 스크립트를 작성하고 있습니다. jbibtex library을 사용하여 파일을 구문 분석하십시오.LaTeX 움라우트 이스케이프 용 정규식?
나의하여 BibTex 소스 파일은 LaTeX의 스타일
저자 = {Fjeld, 모르 텐 및 모델명 : SCH \ "{A} R, Sissel의 Guttormsen}
I와 같은 비 ASCII 문자에 대한 이스케이프 포함 간단한 교체를 사용하려고하지만 탈출에 맞게 적절한 정규식을 쓸 수 없기 때문에 실패했습니다.
내가
했다 가지고 올 수있는 최선을3210하지만 정규식 엔진이 일치하는 것에 대해 불평합니다.
java.util.regex.PatternSyntaxException : 인덱스에 가까운 불법 반복이 \ "{A} 지금까지 내가, 내가
\
및 정규식에{
아니지만을 알고 탈출해야하고 같은
"
또는 }
은. 그럼에도 불구하고, 나는 더 이스케이프 점점 임의의 장소에서 백 슬래시 :(하지만 성공을 추가했습니다.
모든 아이디어를 어떻게 일치하는?
업데이트 A-Umlaut 탈출을위한 해결책은 간단합니다 (Keppil에게 감사드립니다). 그것은
replace("\"{a}", "ä")
입니다 그러나 LATEX은 또한 ß
예를 들어 \{ss}
를 들어, 다른 문자가 빠져 있습니다.
스칼라에서는 문자열에서 "{ss}"을 사용할 수 없으므로 원시 문자열 ""{ss} "" "을 사용하려고했습니다. 그런 다음 전체 교체품이 떨어져 나옵니다.
object Converter {
def cleanLatexEscapes(rawString: String): String = {
val aumlauts = rawString.replace("\"{a}", "ä")
val oumlauts = aumlauts.replace("\"{o}", "ö")
val uumlauts = oumlauts.replace("\"{u}", "ü")
val scharfesEs = uumlauts.replace("""\{ss}""", "ß")
return scharfesEs
}
}
import org.scalatest._
class ConverterSpec extends FlatSpec {
"cleanLatexEscapes" should "clean 'Käseklöße in der Küche'" in {
val escaped = """K\"{a}sekl\"{o}\{ss}e in der K\"{u}che"""
val cleaned = Converter.cleanLatexEscapes(escaped)
assert(cleaned === "Käseklöße in der Küche")
}
}
cleanLatexEscapes - 청소해야 '데르의 Käseklöße Küche'* 실패 * "K [\ äsekl \ OSSE 데르에서 K] 우체"하지 않았다 동일한 "K [데르 K에서 äseklöße] üche "
여기에서 무슨 일이 일어나고 어떻게 움라우트와 에스 케이프 모두 이스케이프가 적용되도록 수정해야합니까? 또한, 테스트 결과에서 대괄호는 어디에서 왔습니까?
죄송합니다. 움라우트에 대해서만 모든 이스케이프에 대해 작동하지 않으므로 허용 된 표시를 제거해야했습니다. 어쩌면 당신은 그것을 모두 커버 할 수있는 대답을 확장 할 수 있습니까? 질문에 더 많은 정보를 올렸습니다. 저는 여전히 스칼라에 대해 매우 새롭고, 전체 이탈 메커니즘이 어떻게 작동하는지 정확하게 알지 못합니다. – rumtscho