TemplateRegexMatcher.getStartRegex sometimes returns a regex that matches with an index before the license start
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne mit TemplateRegexMatcher.getStartRegex und reproduziere beide Java-Beispiele aus dem Issue. Verfolge, wie optionale Abschnitte und gierige Variablenübereinstimmungen in die Start-Regex umgewandelt werden; abgeschlossen ist die Aufgabe, wenn die Beispiele die Startindizes 3 und 2 melden, einschließlich des korrekten Verhaltens, wenn optionale Teile vorhanden sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Version 1.1.11
Example 1 greedy regex after optional:
String licenseText = "ab cd text";
String licenseTemplate = "<<beginOptional>>cd<<endOptional>> <<var;name=\"copyright\";original=\"Copyright (c) <year> <copyright holders> \";match=\".{0,5000}\">> text";
TemplateRegexMatcher templateRegexMatcher = new TemplateRegexMatcher(licenseTemplate);
String startRegex = templateRegexMatcher.getStartRegex(25);
System.out.println("start regex: " + startRegex);
Matcher matcher = Pattern.compile(startRegex).matcher(licenseText);
if (matcher.find()) {
System.out.println("start index found: " + matcher.start());
}
Returns
start regex: (?im)(\Qcd\E\s*)?(.{0,5000})\Qtext\E\s*
start index found: 0
but the start index should be 3.
Example 2 greedy regex at start:
String licenseText = "abtext";
String licenseTemplate = "<<var;name=\"copyright\";original=\"Copyright (c) <year> <copyright holders> \";match=\".{0,5000}\">> text";
TemplateRegexMatcher templateRegexMatcher = new TemplateRegexMatcher(licenseTemplate);
String startRegex = templateRegexMatcher.getStartRegex(25);
System.out.println("start regex: " + startRegex);
Matcher matcher = Pattern.compile(startRegex).matcher(licenseText);
if (matcher.find()) {
System.out.println("start index found: " + matcher.start());
}
Returns
start regex: (?im)(.?{0,5000})\Qtext\E\s*
start index found: 1
but the start index should be 2.
.?{0,5000} doesn't seem to work as expected. It is an unusual regex that some online regex websites say is invalid: https://regex101.com/r/l3810b/1, regexr.com/81kfo.
https://www.freeformatter.com/java-regex-tester.html says the regular expression is valid.
I think maybe to fix this you could just offer a method for a regex to find the beginning of the non-optional part. Otherwise a changing the regular expressions in these two cases to something like the following could work
(?im)((\Qcd\E\s*)(.{0,5000})\Qtext\E\s*)|(\Qtext\E\s*)
(?im)\Qtext\E\s*
In the first case if there were multiple optional parts it would get even more complicated to do it correctly.
- Vorherrschende Sprache
- Java
- Sterne
- 71
- Forks
- 44
- Ø Merge
- 16 Std. 17 Min.
- Gemergte PRs (30 T.)
- 9
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus spdx/Spdx-Java-Library
-
question
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
spdx/Spdx-Java-Library#449 ·
-
question
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
spdx/Spdx-Java-Library#398 ·
-
wontfix
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
spdx/Spdx-Java-Library#393 · 2 Kommentare · 1 Reaktion ·
-
matching
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
spdx/Spdx-Java-Library#392 · 4 Kommentare ·
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
spdx/Spdx-Java-Library#390 · 11 Kommentare · 1 Reaktion ·
Alle Issues in spdx/Spdx-Java-Library
Ähnliche Issues
-
[BUG] S3 CORS responses omit Access-Control-Allow-Credentials for matched originsEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
floci-io/floci#5369 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
sqlcipher/sqlcipher-android#97 · 1 Kommentar ·
-
area-integrations
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug IIIF interoperability
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100