如何使用正则表达式匹配模式的最后一次出现

时间:2016-12-02 06:43:25

标签: javascript regex

我有一个像

这样的字符串
{{token1}}/{{token2}}

我希望使用正则表达式匹配{{token2}}

它应匹配的其他可能情况是

{{token1}}/{应与{(最后一个)匹配。

{{token1}}/{{应与{{(最后一个)匹配。

{{token1}}/{{token2应与{{token2匹配。

我尝试了/\S+$/,但是当字符串为{{token1}} {{token2}}时,它就有效。

提前致谢。

1 个答案:

答案 0 :(得分:3)

你可以使用负向前瞻性正则表达式:

public class MainActivity extends AppCompatActivity {

    Button save;
    TableLayout tableLayout;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button save = (Button) findViewById(R.id.save);

        TableLayout tableLayout = (TableLayout)          findViewById(R.id.table1);

        save.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                TableRow tableRow;
                TextView textView;
                TableLayout tableLayout = (TableLayout)      findViewById(R.id.table1);

                for (int i = 0; i < 4; i++) {
                    tableRow = new TableRow(getApplicationContext());
                   for (int j = 0; j < 3; j++) {
                        textView = new     TextView(getApplicationContext());
                        textView.setText("@@@@");
                        textView.setPadding(20, 20, 20, 20);
                        tableRow.addView(textView);
                    }


                    tableLayout.addView(tableRow);
                }}});


                setContentView(tableLayout);






   }
}

and my xml layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout     xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.kalla.monu.saplist.MainActivity">


    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="28dp"
        android:layout_marginTop="160dp"
        android:id="@+id/table1"
        android:background="@color/colorPrimaryDark">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/darker_gray"/>


           <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:backgroundTint="@android:color/holo_green_dark"     />

        <TableRow
               android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </TableLayout>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:text="save"
        android:id="@+id/save" />
     </RelativeLayout>

/{+[^}]*}*(?!.*{)/ 是负面预测,声称我们在当前位置之前没有(?!.*{)

RegEx Demo