2017-09-28 3 views
1

Ich kann nicht herausfinden, wie dies mit Regex zu tun. Ich möchte nach einer bestimmten Anzahl von Zeichen im Satz einen Punkt setzen.PHP Regex Match-Stopp nach einer bestimmten Anzahl von Zeichen

this is a long sentence. it contains a few full stops in it. I want to match the full stop after the halfway point. 

this sentence is shorter. it also contains full stops but not many. 

Es sollte auch nicht zum letzten Punkt passen. Es sollte mit dem zweiten Punkt im ersten Satz übereinstimmen und keine Übereinstimmung in der zweiten haben. So sollte die Übereinstimmung so aussehen:

this is a long sentence. it contains a few full stops in it[.] I want to match the full stop after the halfway point. 

this sentence is shorter. it also contains full stops but not many. [no match] 

Gibt es eine Möglichkeit, es zu tun? Ich habe etwas entlang der Linien von dieser, die überhaupt nicht arbeiten:

/[.]{20,}/ 
+1

Das klingt ziemlich vage. Siehe ['. {30,}? \ K \. (? =. {30,})'] (https://regex101.com/r/P6JIa5/2/), es passt nur ein Punkt nach 30 oder mehr Zeichen und wenn es mit 30 oder mehr Zeichen gefolgt wird. –

+0

Das war schnell, ich war noch nicht fertig mit der Bearbeitung der Frage. Passt das nicht zusammen? Es war eigentlich für eine preg_split. – Hasen

+0

Wiktor Stribiżew Lösung funktioniert gut –

Antwort

1

Per your feedback,

.{30,}?\K\.(?=.{30,}) 

Muster für Sie arbeitet. Siehe regex demo.

Die Idee ist es, die Leitungslänge, durch 2 zu finden, die Zeichen in der Mitte zu bekommen, und subtrahiert 1 oder 2 aus dem Wert erhalten und es anstelle von 30 im Grenz quantifier in dem obigen Muster verwenden.

Muster Details

  • .{30,}? - alle 30 Zeichen außer Zeilenumbruch Zeichen oder mehr, aber so wenig wie möglich,
  • \K - Match-Reset-Operator, der Text bisher
  • angepasst auslässt
  • \. - ein Punkt
  • (?=.{30,}) - eine positive Vorausschau, die das Vorhandensein von mindestens 30 Zeichen außer Zeilenumbrüchen erfordert y rechts neben dem aktuellen Standort.
+1

Das ist großartig, danke. – Hasen

Verwandte Themen