2016-10-27 7 views
0

単語であれば除外したいが、一文字にしたい。次のパターンの正規表現

私の正規表現:

(\d{2})\[\.\](\d+)\[\.\](\d+|\d\w+)\[\.\]\. 

私が取得しています:

16.03.01a.SPA.bin - >16.03.01aS

03.17.00.S.156-1.S-std.bin - >03.17.00S

03.16.04a.S.155-3.S4a-ext.bin - >03.16.04aS

予想される出力:

16.03.01a.SPA.bin - >16.03.01a

03.17.00.S.156-1.S-std.bin - >03.17.00S

03.16.04a.S.155-3.S4a-ext.bin - >03.16.04aS

最初のものは、単語から単一の文字を取っているが、私はドン」それが欲しい。

+0

''あなたの終わりに正規表現はピリオドと一致し、その後に他の文字が続きます。使用しているエンジンに応じて、 '(\ d {2})\。(\ d +)\。(\ d \ w +)(?= \ ..)'のようなものを試すことができます。 – Phylogenesis

+0

最後です。単一の文字を与えているが、私は最初の出力には望んでいない。私はそこに置く必要があるか分からない。だから私は 'を入れた。そこに – user2314868

+0

あなたが使用している言語やツールを指定し、変換を実行するコードを表示してください(変換には単なる正規表現以上のものがあるので)。 – ruakh

答えて

1

コメントで述べたように、あなたが次の正規表現を探している、:内訳

(\d{2})\.(\d+)\.(\d\w*)(?:\.(.)(?=\.)|) 

、これは次のとおりです。[。]。

(\d{2})    Match 2 digits 
\.     Match a period 
(\d+)    Match 1 or more digits 
\.     Match a period 
(\d\w*)    Match a digit followed by 0 or more word characters 
(?: 
    \.    Match a period 
    (.)(?=\.)  Match a single character (as long as the following character is a period) 
    |    OR match nothing at all 
)