TemplateRegexMatcher.getStartRegex sometimes returns a regex that matches with an index before the license start
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par TemplateRegexMatcher.getStartRegex et reproduisez les deux exemples Java de l’issue. Suivez la manière dont les sections optionnelles et les correspondances de variables gourmandes sont converties en regex de début ; le travail est terminé lorsque les exemples indiquent les indices de début 3 et 2, y compris le comportement correct lorsque des parties optionnelles sont présentes.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Java
- Étoiles
- 71
- Forks
- 44
- Merge moyen
- 16 h 22 min
- PR mergées (30 j)
- 9
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de spdx/Spdx-Java-Library
-
question
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
spdx/Spdx-Java-Library#449 ·
-
question
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
spdx/Spdx-Java-Library#398 ·
-
wontfix
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
spdx/Spdx-Java-Library#393 · 2 commentaires · 1 réaction ·
-
matching
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
spdx/Spdx-Java-Library#392 · 4 commentaires ·
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
spdx/Spdx-Java-Library#390 · 11 commentaires · 1 réaction ·
Toutes les issues de spdx/Spdx-Java-Library
Issues similaires
-
:ml/Transform >bug Team:ML
Difficulté 2/5 Une demi-journée Accessibilité débutants 64/100
elastic/elasticsearch#161960 · 2 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
chore: update release scheduleOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 4 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Tiviacz1337/Travelers-Backpack#1629 ·
-
bug: Authentication and App Check listeners leak the Activity and WebView on AndroidPeut-être pris @harbinzhang l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
capawesome-team/capacitor-firebase#1050 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
capawesome-team/capacitor-plugins#1134 ·
Les mainteneurs répondent en général sous 1 jour