3

選択した形式にも一致させながら、文字列の前後の空白を削除する (ただし、文字列内に含まれる空白はそのままにする) RegEx ステートメントを試して構築したいと考えています。たとえば、文字列は 20 文字を超えることはできず、a-zA-Z0-9 の任意の文字、アンダースコア、ハイフンを含めることができます。ただし、最も重要なことは、文字列の先頭または末尾にあるスペースを削除または無視する必要があることです。

正解:「良い一日を」

間違った例: 「よい一日を」

私はこれを行うためにさまざまな方法を試しましたが、残念ながらこれまでのところ、私が望んでいることを正確に行う式を思いつくことができませんでした. 適切な正規表現を手伝ってくれる人はいますか? (これは最も単純な形式の RegEx であり、プラットフォーム固有ではありません)。

4

5 に答える 5

4

次のパターンを検索します。

^\s*(.*?)\s*$

これに置き換えます:

\1
于 2013-01-25T09:03:06.917 に答える
0

これはあなたのニーズに合うはずです:

^\S[\w\s-]{0,18}\S$

18空白文字以外の文字にそれぞれ一致するmaxlength - 22つのため、文字列のです。\Sたとえば、この場合、文字列の長さが char より大きい場合、文字列は一致しません202さらに、上記と同じ制約により、文字列の長さが char より短い場合、文字列は一致しません。

于 2013-01-25T08:56:02.423 に答える
0

It seems from your example that space is allowed in the middle of the string as well, so try this one

^((([a-zA-Z0-9\-_][a-zA-Z0-9\-_ ]{0,18}?[a-zA-Z0-9\-_]))|([a-zA-Z0-9\-_]))$

Anything which is matched is correct.

The or section in the pattern is used for supporting a single character sentence.

于 2013-01-25T08:48:41.007 に答える
0

これはsedを使用した例です

echo "  Have a nice day  "|sed -E "s/^ *([^ ]+.*[^ ]+) +$/\\1/"
于 2017-05-11T23:19:32.577 に答える
0

この正規表現を使用します^\S((.{0,18}\S)|)$

^文字列の始まり

\S非スペース記号

(.{0,18}\S)?末尾の任意の記号と非スペース記号 (0 ~ 19 記号)

|また

$文字列の終わり

于 2013-01-25T08:57:39.943 に答える