필자가 쓰고있는 파이썬 애플리케이션은 소스 코드에서 식별자와 텍스트 문자열을 추출해야한다. 발견 한 것의 작은 비율은 (겉으로보기에) 임의의 문자열입니다. 나는 그들을 필터링하고 싶습니다만, 지금까지 그것을하기 위해 정규 표현식을 만들 수 없었습니다. 매우 긴 식별자가 유효하기 때문에 길이로만 필터하는 것은 불가능합니다.실제로 랜덤 한 문자열을 일치시키는 방법은 무엇입니까?
UGxhemEgZGUgaWZXNaWdhZGyOiBDSUWRVNUQVYtSVBOIFVuaWQ
NSApplicationDidChangeScreenParametersNotification
같이 정크 서열을 검출 유용한 정규식 또는 다른 감지 시스템을 작성하는 방법이된다 다음 예는 동일한 길이의 유효한 식별자에 비해 랜덤 촬영? 나는 많은 단어 사전에 대해 문자열을 테스트하지 않고는 오류를 일으키지 않을뿐만 아니라 계산 집약적 일 수밖에 없다고 생각하기 시작했습니다. 어쩌면이 같은 무작위 순서를 탐지하거나 일치시키는 접근법을 더 똑똑히 알고있는 사람이 있을까요?
이 문제에 대한 이상적인 솔루션은 문자열을 입력으로 사용하고 "아마"무작위 인 경우보고 할 수있는 기능입니다. 거짓 가청을 생성 할 수 있으며 (임의의 문자열을 임의로 잘못보고하지 않음) 바람직하지는 않지만 가능성이 낮습니다. 그러나 가양 성을보고하지 않아야합니다. 문제가되는 경우 문자열의 길이는 25에서 80 자까지입니다.
EDIT # 1 2017-02-08 : 생각해 보면 가능한 접근법은 행의 최소 고유 문자 수와 일치하는 정규 표현식 일 수 있습니다. 예를 들어, 두 번째 문자는 첫 번째 문자와 다른 문자 여야합니다. 앞의 두 문자와 다른 문자가 있어야하고, 이전 문자와 다른 문자가 있어야합니다. 그러나 다른 regexp 연산자를 보면 "부정적인 역 참조"또는 "일치하는 것보다 기타과 일치하는"(더 나은 단어가 부족한 경우) 버전이 표시되지 않습니다. 누군가가 이것에 변이를 알고있는 경우에, 어쩌면 나는 그것을 일하게 할 수있다.
편집 # 1 2017-02-10 : 두 개의 예제 문자열을 작성한 방법이 단일 문자열로 잘못 해석 될 수 있습니다. 위의 예는 동일한 길이의 두 개의 분리 된 문자열 – 그것이 불분명 한 경우 진심으로 사과합니다. 여기에 몇 가지 예가 있습니다. 각 행은 별도의 식별자입니다. 이것은 또한 목적에 따라 길이가 다름을 보여줍니다. 그것은 가치가 무엇이든 들어
shouldBeAbleToCountLiveNeighboursOfACellOnDiagonalsAndStraightLines
eXNZWzIGbHRpbWVkaWEgYWkIGFuaWhdGlvbiBkaXNcmlidXRlZCNCpUgRGlzdHJpYnV
dWxLXRvbGVyYWIHJlYWwtdGltZSBzeXNZWzLgKlSBEaXNcmlidXRlZCBBcmNoaXRlYR
dGhIExvIHNYmltbMgYSBsYSBwWdpbmEgeSBsbyBhbnVuYlhbWzIGVuIGVsIHByhpbWg
aGUgYuZmVyZWjZSBwcmjZWVkaWncygDQoNClNYmpcNpbNCkluIGyZGVyIHRvIHN
YQKUGFyYTogZXNYFyQGluYWlcCteAKQMIExaXMgQSgUGluZWRhDQpDQzogQuYVw
thehasSizeMatcherShouldMatchACollectionWithExpectedSize
QycmVvIGRlIERpcVtaWhYnDsgZGUgYWNaXZpZGFkZXMgZGUgbGEg
NSAppleEventManagerWillProcessFirstEventNotification
SNMTransformGizmoRotationControllerPerformTransform
RndkOiBEaWZcnDsgZGUgYudmjYXRvcmlhIFNVTUJVCBlbiBSRUJ
, 나는 약 900 GitHub의 저장소의 반 임의 선택에서 내 응용 프로그램에 의해 끌려 페이스트 빈 a list of the 1000 longest identifiers 입었다. 실제 식별자와 임의 문자열을 모두 포함합니다.
NLTK가 유용 할 수 있습니다. – sytech
유효한 토큰에 영어가 포함되어 있다고 가정하면 유효하지 않은 토큰의 수가 4 자 이상 연속되는 경우가 많습니다. – swbandit
첫눈에, 문자열 길이가 충분히 크면 (25-80은 괜찮을 수도 있음), 각 문자의 빈도를 계산하고이 분포를 영어의 일반 텍스트와 비교해보십시오. –