タグ付けされた質問 「regular-expression」

正規表現の使用を含むコードの課題。

1
正規表現の多言語を作成する
少なくとも2つの正規表現フレーバー(またはバージョン)で動作する正規表現を作成し、実行中の各フレーバー(またはバージョン)の異なる文字列と一致させます。 このチャレンジで一致する文字列は、Ubuntuコード名の最初の単語で、以下にリストされています。正規表現はリストの先頭から一致する必要があります。つまり、正規表現が3つのフレーバーで動作する場合、他の正規表現ではなく、と一致する必要がWarty HoaryありBreezyます。 Warty Hoary Breezy Dapper Edgy Feisty Gutsy Hardy Intrepid Jaunty Karmic Lucid Maverick Natty Oneiric Precise Quantal Raring Saucy Trusty Utopic Vivid Wily Xenial Yakkety Zesty 17.10 18.04 18.10 19.04 19.10 ... 正規表現が26を超えるフレーバーで機能する場合は、代わりにUbuntuのバージョン番号を一致させることができます。17.10以降、新しいフレーバーごとに、2番目の数値が04の場合は2番目の数値を10に変更し、最初の数値を増分してそれ以外の場合は2番目の数値を04に変更します。 各フレーバーでは、正規表現は想定される文字列のみに一致し、他には何も一致しない必要があります(コード名に限定されません)。末尾の改行は重要ではありません。つまり、正規表現は、末尾の改行を含まない文字列のみと一致するか、末尾の改行を含む文字列のみと一致するか、または両方とも一致する可能性があります。また、異なるフレーバーで一貫している必要はありません。入力は印刷可能なASCII(末尾の改行がある場合はそれを除く)であると想定できます。 スコアは(コードの長さ+ 10)/((フレーバーの数)^ 2)です。最低スコアが勝ちます。

8
文字列から単一行と複数行のコメントを削除します
ゴール 選択したプログラミング言語を使用して、Cプログラムを表す文字列からコメントを削除する最短のプログラムを作成します。 入力 文字列は任意の形式の入力として使用できますが、変数として使用することもできます。 説明書 次の2種類のコメントを削除します。 複数行コメントで始まり、/*で終わる*/ //Linuxスタイルの改行(LF、\n)で始まり、末尾が単一行のコメント 文字列内のコメントは削除されません。この課題のために、考慮する必要があるのは、"区切り文字列のみです。特に、'区切り文字リテラルの可能性は無視できます。3文字表記と行継続(/\<LF>*...)を無視することもできます。 例 入力: #include <stdio.h> int main(int argc, char** argv) { // this comment will be removed if (argc > 1) { printf("Too many arguments.\n"); // this too will be removed return 1; } printf("Please vist http://this.will.not.be.removed.com\n"); printf("/* This will stay */\n"); …

2
単数または複数?
30個の英語の名詞の単数形と複数形のリストを次に示します。あなたの仕事は、最短の正規表現と一致する記述するだけで、すべての一つの形で名詞をし、どれも他では(簡単に、すべての英語の名詞で終わるs複数形の右にあります?)。 SINGULAR PLURAL --------- -------- car cars boat boats man men woman women omen omens bus buses cactus cacti spy spies pie pies louse lice mouse mice amice amices goose geese creese creeses person people child children siren sirens ox oxen foot feet tooth teeth formula formulae minx minxes sphinx …

2
正規表現:平等主義シリーズに一致
前書き 私はここで多くの正規表現の挑戦を見ていませんので、いくつかの正規表現のフレーバーを使用していくつかの方法で行うことができるこの一見単純なものを提供したいと思います。正規表現愛好家にちょっとしたゴルフの時間を提供してくれることを願っています。 チャレンジ 挑戦は、私が「平等主義」シリーズと非常に大まかに言ったものと一致させることです:異なるキャラクターの等しい数のシリーズ。これについては、例を挙げて説明するのが最適です。 一致: aaabbbccc xyz iillppddff ggggggoooooollllllffffff abc banana 一致しない: aabc xxxyyzzz iilllpppddff ggggggoooooollllllfff aaaaaabbbccc aaabbbc abbaa aabbbc 一般化するために、我々は、(フォームの件名を一致させたい任意の文字のリストについては、に、すべてのためにc1)n(c2)n(c3)n...(ck)nc1ckci != ci+1i, k > 1, and n > 0. 明確化: 入力は空になりません。 文字は文字列の後半で繰り返される場合があります(例: "banana") k > 1、したがって、文字列には常に少なくとも2つの異なる文字があります。 ASCII文字のみが入力として渡され、文字が行末記号になることはないと想定できます。 ルール (この非常に明快な規則のブロックについてMartin Enderに感謝します) 答えは、追加のコードを含まない単一の正規表現で構成する必要があります(オプションで、ソリューションを機能させるために必要な正規表現修飾子のリストを除く)。ホスティング言語でコードを呼び出すことができる言語の正規表現フレーバーの機能(Perlのe修飾子など)を使用しないでください。 このチャレンジの前に存在していた正規表現フレーバーを使用できますが、フレーバーを指定してください。 たとえば、Pythonを使用している場合、正規表現がre.matchではなくre.searchで使用されていると想定してください。正規表現は、有効な平等主義の文字列の文字列全体と一致し、無効な文字列の一致を生成しない必要があります。必要な数のキャプチャグループを使用できます。 入力は常に、ラインターミネータを含まない2つ以上のASCII文字の文字列であると想定できます。 これは正規表現のゴルフであるため、バイト単位の最短正規表現が優先されます。言語で/.../正規表現を表すために区切り文字(通常は)が必要な場合は、区切り文字自体をカウントしないでください。ソリューションで修飾子が必要な場合は、修飾子ごとに1バイトを追加します。 基準 これは昔ながらのゴルフですから、効率を忘れて、正規表現をできるだけ小さくしてください。 使用した正規表現フレーバーに言及し、可能であれば、実際の表現のオンラインデモを示すリンクを含めてください。

4
圧縮された曜日
曜日のリストの入力が与えられると、リストの最短のソートされた表現を出力します。 入力の形式は、2文字のストリングの一つ以上からなる文字列であるSu(日)、 Mo(月)、 Tu(など)、 、We、Th、 FrおよびSa。入力は必ずしもソートされた順序で与えられるとは限りません。 入力を出力形式に変換するには、 入力を日曜日から始まる曜日で並べ替えます(例ThMoSaSuFrTuWe-> SuMoTuWeThFrSa)。 あいまいさを残さない場合は、略語を1文字に減らします。たとえば、最初のSが土曜日になることができなかったため、にSuMoTuWeなるはずSMTWです。これにより、出力がソートされなくなります(Tと同じ)。しかし、ThFrSaなるはずThFS火曜日と木曜日の両方が金曜日前にそれを減らしてくると、TFSあいまいさを作成します。 出力がnowの場合、代わりMTWTFに出力D(「week day s」を表します)。同様に、SSなるはずE週間のために終了。最後に、 SMTWTFSなるべきAために、すべての日。 入力と出力は両方とも単一の文字列でなければなりません。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 テストケース: In Out | In Out -----------------------|-------------------- SuTu STu | SuTuWe STW SuTuSa STuS | SuWeTh SWT TuThSa TTS | TuThSu STT Su Su | Sa Sa WeTh WT | FrTh ThF WeTu TW …

9
期間を合計する
チャレンジ stdinに表示されるすべての期間を合計できる最短のコードを記述します。プログラムは、次のパターンのいずれかと一致する文字列のみを考慮し、残りは無視する必要があります。 HH:MM:SS (it will be interpreted as HH hours, MM minutes and SS seconds) H:MM:SS (it will be interpreted as H hours, MM minutes and SS seconds) MM:SS (it will be interpreted as MM minutes, SS seconds) M:SS (it will be interpreted as M minutes, SS seconds) 列挙されたパターンと一致する文字列の例: 12:00:01 …

25
シンプルなパターン
入力: 選択した入力形式での2つの1桁(それらをm、と呼んでみましょうn)と2つの文字(aとと呼んでみましょうb)。 出力: チュートリアルでは、のふりをしm=2, n=5, a='a', b='b'ます。 出力は、4つの入力から作成された文字列になります。resultvalueでstringを呼び出しましょう""。まず、CONCATENATE aへのresult m回なので、CONCATENATE aへresult 2回。resultに等しくなりましたaa。第二に、CONCATENATE bへのresult m回なので、CONCATENATE bへresult 2回。resultに等しくなりましたaabb。最後に、resultがすでにより長い場合n、resultlengthを持つように切り捨てnます。それ以外の場合は、のm長さの実行aとが長さになるbまで交互に続けます。最後は、長さです。resultnresultaabba5 テストケース: Input: m = 2, n = 4, a = A, b = B Output: AABB Input: m = 3, n = 8, a = A, b = B Output: AAABBBAA Input: m = …
17 code-golf  string  code-golf  arithmetic  code-golf  string  array-manipulation  rubiks-cube  code-golf  math  number  code-golf  tips  bash  code-golf  ascii-art  music  code-golf  arithmetic  code-golf  math  number  arithmetic  integer  code-golf  number  array-manipulation  code-golf  geometry  grid  set-partitions  code-golf  math  number  code-golf  combinatorics  code-golf  regular-expression  code-golf  permutations  code-golf  ascii-art  code-golf  number  array-manipulation  matrix  code-golf  kolmogorov-complexity  compile-time  cops-and-robbers  polyglot  cops-and-robbers  polyglot  code-golf  string  code-golf  string  ascii-art  matrix  animation  code-golf  ascii-art  code-golf  string  balanced-string  code-golf  integer  integer-partitions  expression-building 

2
正規表現のコンパイル
このタスクでは、正規表現を読み取り、その正規表現が入力文字列を受け入れるかどうかを出力する別のプログラムを生成するプログラムを作成する必要があります。出力は、提出物と同じ言語で書かれたプログラムでなければなりません。 入力 入力は、次のABNFに一致する正規表現rです(最初の生産規則はですREGEX)。 REGEX = *( STAR / GROUP / LITERAL / ALTERNATIVE ) STAR = REGEX '*' GROUP = '(' REGEX ')' LITERAL = ALPHA / DIGIT ALTERNATIVE = REGEX '|' REGEX 入力がこの文法と一致しない場合、プログラムの動作は未定義です。 解釈 入力を正規表現として解釈します。ここ*で、Kleene-star(左引数を0回以上繰り返すことを意味します)|は代替で(あり、)グループであり、演算子はまったく連結されていません。グループ化はスターより優先され、スターは連結より優先され、連結は代替より優先されます。 正規表現が文字列全体と一致する場合、文字列は受け入れられると言われます。 出力 プログラムの出力は、文字列読み込み、あなたの投稿と同じ言語で書かれた別のプログラムであるのかどうか、実行時に方法を定義した実装では、出力rは受け入れ秒を終了。出力はユーザー定義の方法で実行できますが、受け入れられたプログラムと拒否されたプログラムの出力は2つだけでなければなりません。 出力プログラムの入力が2 16 -1バイトより長くなることはないと想定できます。 制限事項 提出物も、提出物によって生成されたプログラムも、組み込み機能またはライブラリを使用できません。 正規表現に一致 正規表現を変換する 正規表現をコンパイルする 文法からパーサーを生成する 提出物が簡単になるように問題を簡素化する 得点 …

1
正規表現の検証正規表現[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 去年閉鎖されました。 入力として正規表現文字列を受け入れ、それが有効かどうかを確認する正規表現を作成します。基本的に、正規表現はそれ自体を検証できるはずです。(無効な正規表現は検証されないため、使用できません.*。;) フレーバーは、よく知られている実装(Perl、sed、grep、gawkなど)によって完全にサポートされている必要があり、それらの実装がサポートするものを完全にサポートしている必要があります。[弁護士が話すことを心配しないでください。私は、スマート***の可能性のある抜け穴を削除しようとしています。] 私はそれをコードゴルフしたいと思いますが、機能が豊富ではないフレーバーを知って使用している人々に優位性を与えるのではないかと心配しています。または、私の心配は根拠がありませんか?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

6
バイナリフェンス
入力: n範囲内の整数2 <= n <= 10 正の整数のリスト 出力: 整数をバイナリ表現(先行ゼロなし)に変換し、それらをすべて結合します。 次にn、フェンスポストの量を使用して、「バイナリフェンス」を形成するすべてのバイナリサブストリングを決定します。各フェンスポスト間のスペース(ゼロ)は無関係(少なくとも1)ですが、フェンスポスト自体はすべて同じ幅にする必要があります。 ここで、バイナリ部分文字列がそれぞれに一致する正規表現n: n Regex to match to be a 'binary fence' Some examples 2 ^(1+)0+\1$ 101; 1100011; 1110111; 3 ^(1+)0+\10+\1$ 10101; 1000101; 110011011; 4 ^(1+)0+\10+\10+\1$ 1010101; 110110011011; 11110111100001111001111; etc. etc. You get the point n=4例を見ます: 1010101 ^ ^ ^ ^ All …

2
逆の正規表現-正規表現を分解する
問題 いくつかのコードで使用する必要がある正規表現がたくさんありますが、正規表現をサポートしていないプログラミング言語を使用しています!幸いなことに、テスト文字列は最大長であり、印刷可能なASCIIのみで構成されることがわかっています。 チャレンジ 入力する必要があり、正規表現と数n、及び出力の印刷可能なASCII文字(ASCIIコード32包括的な126、から構成されるすべての文字列に対して~未満又は等しい長さの、ないタブや改行)n正規表現ものと一致します。コードで組み込みの正規表現または正規表現一致関数を使用することは一切できません。正規表現は次のものに制限されます。 リテラル文字(およびエスケープ、文字を強制的にリテラルにするため\.、リテラル.、\nはリテラルn(ちょうどに相当n)、および\wに相当しwます。エスケープシーケンスをサポートする必要はありません。) . -ワイルドカード(任意の文字) 文字クラスは、[abc]「aまたはbまたはc」を[d-f]意味し、dからfまでのすべてを意味します(so、dまたはeまたはf)。文字クラスで特別な意味を持つ唯一の文字は[、および](常にエスケープされるため、それらを心配しないでください)、\(エスケープ文字、もちろん)、^文字クラスの先頭(否定です) )、および-(範囲です)。 |-OR演算子、交互。foo|bar手段のいずれかfooまたはbar、そして(ab|cd)e試合のいずれかabeまたはcde。 * -貪欲に0回以上繰り返された前のトークンに一致します(可能な限り何度も繰り返します) + -貪欲な1回以上の繰り返し ? -0回または1回 のトークンをグループ化するために|、括弧でグループ化します*。+、または? 入力正規表現は常に有効になります(つまり、あなたは次のように入力を処理する必要はありません?abcか、(fooまたは無効な入力)。任意の順序で文字列を出力できますが、各文字列は一度だけ表示する必要があります(重複を出力しないでください)。 テストケース 入力:.*、1 出力:(空の文字列)、 、、 、...、 、!"}~ 入力:w\w+、3 出力:ww、www 入力:[abx-z][^ -}][\\]、3 出力:a~\、b~\、x~\、y~\、z~\ 入力:ab*a|c[de]*、3 出力:c、cd、ce、aa、cde、ced、cdd、cee、aba 入力:(foo)+(bar)?!?、6 出力:foo、foo!、foofoo、foobar 入力:(a+|b*c)d、4 出力:ad、cd、aad、bcd、aaad、bbcd 入力:p+cg、4 出力:pcg、ppcg 入力:a{3}、4 出力:a{3} 勝者 これはcode-golfなので、バイト単位の最短コードが勝ちます!

4
JavaScriptの最短URL正規表現一致
JavaScriptで実行したときにテキスト内のURLにほぼ一致する最短の正規表現を作成します 例: "some text exampley.com".match(/your regular expression goes here/); 正規表現は httpおよびhttps用の有効なURLをすべてキャプチャします。 実際に有効なURLではないURLのような文字列に一致しないことを心配しないでください super.awesome/cool JavaScript正規表現として実行するときに有効である テスト基準: 一致: http://example.com http://example.com/ http://example.com/super https://example.com/super example.com/super example.com example.com/su-per_duper/?add=yes&subtract=no example.com/archive/index.html twitter.com/#!/reply example.com/234ret2398oent/234nth codegolf.stackexchange.com/questions/464 crazy.wow.really.example.com/?cat=nth%3E example-example.com example1.com 合わない: 例 超クール おはようございます できます こんにちは。 http://jsfiddle.net/MikeGrace/gsJyr/を少し明確にするのに役立つテストを次に示します。 明快さの欠如をおizeびします。一致するURLがどれほどひどいものであるかを理解していませんでした。

2
RXによるValiDate ISO 8601
チャレンジ 最短の正規表現を見つける Prolepticグレゴリオ暦のすべての可能な日付(1582年の最初の採用前のすべての日付にも適用されます)を検証、つまり一致させます。 無効な日付と一致しません。 出力 したがって、出力は真実または偽です。 入力 入力は、3つの拡張ISO 8601日付形式のいずれかであり、時間はありません。 最初の2つは±YYYY-MM-DD(年、月、日)と±YYYY-DDD(年、日)です。両方ともうるう日に特別なケーシングが必要です。これらは、これらの拡張RXによって個別に単純にマッチングされます。 (?<year>[+-]?\d{4,})-(?<month>\d\d)-(?<day>\d\d) (?<year>[+-]?\d{4,})-(?<doy>\d{3}) 3番目の入力形式は±YYYY-wWW-D(年、週、日)です。複雑なうるう週パターンのため、複雑なものです。 (?<year>-?\d{4,})-W(?<week>\d\d)-(?<dow>\d) 3つすべてを組み合わせた場合の基本的な、しかし不十分な妥当性チェックは、次のようになります。 [+-]?\d{4,}-((0\d|1[0-2])-([0-2]\d|3[01]) ↩ |([0-2]\d\d|3[0-5]\d|36[0-6]) ↩ |(W([0-4]\d|5[0-3])-[1-7])) 条件 うるう年予期的グレゴリオ暦のカレンダーでは、含まれているうるう日 …-02-29、したがって、それは長い366日で、それ故に…-366存在します。これは、序数が4で割り切れる年に発生しますが、400で割り切れる場合を除き、100で割り切れません。 このカレンダーにはゼロ年が存在し、うるう年です。 長い年のISO週のカレンダーでは、1つの「という用語ができた、第53週が含まうるう週を」。これは、1月1日が木曜日であるすべての年に発生し、さらに水曜日であるすべてのうるう年に発生します。通常、5年または6年ごとに、一見不規則なパターンで発生することが判明しています。 年は少なくとも4桁です。10桁を超える年は、宇宙の年齢(約140億年)に十分近いため、サポートする必要はありません。先頭のプラス記号はオプションですが、実際の標準では、4桁を超える年数は必須であることを示しています。 部分的な日付または切り捨てられた日付、つまり日精度未満の日付は受け入れられません。 日付表記の一部、たとえば月は、参照可能なグループと一致する必要はありません。 ルール これはコードゴルフです。実行されたコードのない最短の正規表現が優先されます。更新:再帰やバランスのとれたグループなどの機能を使用できますが、10倍の罰金が科せられ、その後文字数が乗算されます!これは、ハードコードゴルフの規則とは異なります。分割可能性の正規表現は7です。以前の回答が引き分けになります。 テストケース 有効なテスト 2015-08-10 2015-10-08 12015-08-10 -2015-08-10 +2015-08-10 0015-08-10 1582-10-10 2015-02-28 2016-02-29 2000-02-29 0000-02-29 -2000-02-29 -2016-02-29 200000-02-29 2016-366 2000-366 0000-366 -2016-366 …

2
順列と一致します!
あなたの課題は、それ自体のすべての文字列の置換に一致する正規表現を作成することです。また、大文字と小文字を区別する必要があります。 したがって、たとえば、正規表現が次の場合: ABC これらの文字列と一致する必要があります(一致するだけです)。 ABC ACB BAC BCA CAB CBA 次のようなものと一致しないはずです。 AABC (contains an extra A) ABCD (contains an extra D) AC (no B) AAA (no B and C, extra 2 A's) abc (case-sensitive) ルール: 任意の種類の正規表現を使用できます。 標準の抜け穴が適用されます。 コードには少なくとも2つの異なる文字が必要です。つまり、次のようなソリューション1は無効です。 正規表現には、印刷可能なASCIIのみを含める必要があります。

4
スタック交換URLを一致させる
プロローグ アンチXSSブラウザー拡張機能をインストールした後、Stack SnippetsはStack Exchangeネットワーク全体で突然機能しなくなりました。私はもうStack Overflowから学ぶことができず、ユーザーエクスペリエンスの実際のデモを見て、最悪のことには、プログラミングパズルとコードゴルフで JavaScriptの答えをテストできませんでした!必死に、私は救済策を探し、設定に小さな入力ボックスを見つけました。そこに単一の正規表現を置くことができました。すべてのStack Exchangeサイトをこの小さなボックスに収めることができなかったため、助けを求めました。これがその質問です。 仕事 あなたのタスクは、Stack Overflow Inc.が所有していないドメインとは一致せずに、すべてのStack Exchange WebサイトURLと一致する正規表現を作成することです。 正規表現は、次の部分を持つすべてのURLと一致する必要があります。 protocol:これはhttp://またはhttps://です。 domain:これは、このリストのアイテムになります。 stackoverflow.com www.stackoverflow.com facebook.stackoverflow.com serverfault.com superuser.com meta.stackexchange.com webapps.stackexchange.com nothingtoinstall.com meta.webapps.stackexchange.com meta.nothingtoinstall.com gaming.stackexchange.com arqade.com thearqade.com meta.gaming.stackexchange.com meta.arqade.com meta.thearqade.com webmasters.stackexchange.com webmaster.stackexchange.com meta.webmasters.stackexchange.com meta.webmaster.stackexchange.com cooking.stackexchange.com seasonedadvice.com meta.cooking.stackexchange.com meta.seasonedadvice.com gamedev.stackexchange.com meta.gamedev.stackexchange.com photo.stackexchange.com photography.stackexchange.com photos.stackexchange.com meta.photo.stackexchange.com meta.photography.stackexchange.com meta.photos.stackexchange.com stats.stackexchange.com statistics.stackexchange.com …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.