<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS/JScript: RegExp Разбиение строки на фрагменты заданной длины]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8103&amp;type=atom" />
	<updated>2013-02-24T21:25:27Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8103</id>
		<entry>
			<title type="html"><![CDATA[Re: JS/JScript: RegExp Разбиение строки на фрагменты заданной длины]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69758#p69758" />
			<content type="html"><![CDATA[<p>Да. Можно записать короче, но я исходил из постановки задачи - &quot;вначале одно, потом другое, ну и напоследок все остальное&quot;. Короткий вариант решает другую задачу - &quot;хоть что-нибудь из списка возможных&quot;.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2013-02-24T21:25:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69758#p69758</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS/JScript: RegExp Разбиение строки на фрагменты заданной длины]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69757#p69757" />
			<content type="html"><![CDATA[<p><strong>Rumata</strong>, да. Первый вариант работает идеально, а второй можно записать ещё короче:<br />/.{1,10}(([.?!;,\s]\s*)|$)/g<br />я с такого начал, потом получил то, что в первом посте. Так напугался перечислений в квадратных скобках, что вообще от них отказался...</p><div class="quotebox"><blockquote><p>как люди будут искать в этой куче?</p></blockquote></div><p>так же, как сейчас ищут по всему форуму (не люблю гугель, но в данном случае он рулит). Искать, точно зная ветку, не сложнее, чем неизвестную ветку, возможно, с малоинформативным названием.</p><div class="quotebox"><blockquote><p>А как мы будем ссылаться на готовые решения</p></blockquote></div><p>на <a href="http://forum.script-coding.com/viewtopic.php?pid=69756#p69756">отдельный пост</a> можно.</p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2013-02-24T20:47:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69757#p69757</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS/JScript: RegExp Разбиение строки на фрагменты заданной длины]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69756#p69756" />
			<content type="html"><![CDATA[<p>Я против кучи. А потом как люди будут искать в этой куче? А как мы будем ссылаться на готовые решения? </p><div class="quotebox"><blockquote><p>мысль из поста #4 работает некорректно</p></blockquote></div><p>Это имеете в виду? </p><p>Пример<br /></p><div class="codebox"><pre><code>

var re1 = /.{1,10}[.?!]\s*|.{1,10}[;,]\s*|.{1,10}(\s+|$)/g;

var re2 = /.{1,10}([.?!]\s*|[;,]\s*|\s+|$)/g;

var s = &#039;123 456 78. 90. 1234 56 78. 90.&#039;;

WScript.Echo(re1);
WScript.Echo(s.match(re1).join(&#039;\n&#039;));

WScript.Echo(re2);
WScript.Echo(s.match(re2).join(&#039;\n&#039;));
</code></pre></div><p>Результат:<br /></p><div class="quotebox"><blockquote><p>Первый режет по концам предложений<br />/.{1,10}[.?!]\s*|.{1,10}[;,]\s*|.{1,10}(\s+|$)/g<br />123 456 78.<br />90.<br />1234 56 78.<br />90.</p><p>Второй режет по любому разделителю, ближайшему к границе (10 символов в примере)<br />/.{1,10}([.?!]\s*|[;,]\s*|\s+|$)/g<br />123 456 78.<br />90. 1234<br />56 78. 90.</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2013-02-24T19:08:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69756#p69756</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS/JScript: RegExp Разбиение строки на фрагменты заданной длины]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69754#p69754" />
			<content type="html"><![CDATA[<p>Опа! А вот мысль из поста #4 работает некорректно, примерно так же, как [.?!;,]. Т.е. используется последний (перед 650-го символа) разделитель. Без приоритетов.</p><p>Что касается переименования, я имел ввиду свалить все такие темы в одну и, в дальнейшем, использовать её для подобных запросов.</p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2013-02-24T18:38:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69754#p69754</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS/JScript: RegExp Разбиение строки на фрагменты заданной длины]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69751#p69751" />
			<content type="html"><![CDATA[<p>Вот еще (мысль пришла гораздо позже):<br /></p><div class="codebox"><pre><code>/.{1,650}([.?!]\s*|[;,]\s*|\s+|$)/g</code></pre></div><p>Я думаю, что &quot;JS/JScript: Разбиение строки на фрагменты заданной длины&quot; приемлемое название. Хотя могут быть и другие подходящие варианты. Авторов тех тем вряд ли призовешь к переименованию. Возможно модераторы дали бы им другие заголовки.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2013-02-24T16:10:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69751#p69751</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS/JScript: RegExp Разбиение строки на фрагменты заданной длины]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69750#p69750" />
			<content type="html"><![CDATA[<p>Ну вот... Когда подсказали, всегда кажется: мог бы и сам догадаться...<br /><strong>Rumata</strong>, в очередной раз спасибо!</p><p>По поводу плохой практики: может, создать отдельную тему &quot;JS/VBS: Помогите написать правильное регулярное выражение&quot; и перенести в неё соответствующие темы (эту и приведённые в первом посте, может, и ещё есть)?</p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2013-02-24T15:41:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69750#p69750</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS/JScript: RegExp Разбиение строки на фрагменты заданной длины]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69749#p69749" />
			<content type="html"><![CDATA[<p>Плохая практика давать темам обобщающие названия. </p><p><strong>Serge Yolkin</strong>, попробуйте так:<br /></p><div class="codebox"><pre><code>/.{1,650}[.?!]\s*|.{1,650}[;,]\s*|.{1,650}(\s+|$)/g</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2013-02-24T14:23:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69749#p69749</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS/JScript: RegExp Разбиение строки на фрагменты заданной длины]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69744#p69744" />
			<content type="html"><![CDATA[<p>Не уверен, стоило ли создавать новую тему, есть <a href="http://forum.script-coding.com/viewtopic.php?id=5811">JScript: регулярные выражения</a>, <a href="http://forum.script-coding.com/viewtopic.php?id=7017">JavaScript: Регулярное выражение</a> и <a href="http://forum.script-coding.com/viewtopic.php?id=7947">JScript регулярное выражение!</a>, но, поскольку в них обсуждалось по одному вопросу, создал ещё одну такую же...</p><p>Собственно, вопрос: можно ли упростить/ сократить/ оптимизировать следующее выражение:</p><div class="codebox"><pre><code>/.{1,650}\.\s*|.{1,650}\?\s*|.{1,650}\!\s*|.{1,650}\;\s*|.{1,650}\,\s*|.{1,650}\s+|.{1,650}$/</code></pre></div><p>?<br />Чтобы было понятно, следующий код пытается разбить входной текст (без переводов строки) на фрагменты не более 650 символов, причём, сначала - по предложениям (. ? !), потом по &quot;;&quot; и &quot;,&quot;, и только потом, если не получилось, по прбелам (ну, или до конца):</p><div class="codebox"><pre><code>var outputArr=inputText.match(/.{1,650}\.\s*|.{1,650}\?\s*|.{1,650}\!\s*|.{1,650}\;\s*|.{1,650}\,\s*|.{1,650}\s+|.{1,650}$/g);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2013-02-24T11:35:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69744#p69744</id>
		</entry>
</feed>
