Suppose I have an object, for simplicity, created as a grid and two circles. How can I extract a mesh, which satisfies a condition: x>=0 and y>=0. This implies that the faces associated with the circles have to be bisected. 
I am wondering if there is a relatively easy solution to this. May be,  bmesh.ops.bisect_plane can be of any help in this situation, but I do not know how to apply it.

    import bpy
    
    import bmesh
    
    bpy.ops.object.select_all(action='SELECT')
    
    bpy.ops.object.delete()
    
    bpy.ops.mesh.primitive_circle_add(vertices=32, radius=2, 
                                      location=(0.5, 0.5, 0.0), fill_type='NGON')
    
    bpy.ops.object.mode_set(mode='EDIT')
    
    bpy.ops.mesh.select_all(action="DESELECT")
    
    bpy.ops.mesh.primitive_circle_add(vertices=32, radius=3, 
                                      location=(0.5, 0.5, 0.0), fill_type='NGON')
    
    bpy.ops.object.mode_set(mode='EDIT')
    
    bpy.ops.mesh.select_all(action="DESELECT")
    
    bpy.ops.mesh.primitive_grid_add(x_subdivisions=3, y_subdivisions=3, 
                                    radius=4.0, location=(0.0,0.0,0.0))
    
    bpy.ops.object.mode_set(mode='EDIT')
    
    bpy.ops.mesh.select_all(action="DESELECT")
    
    bpy.ops.object.mode_set(mode='OBJECT')
    
    obj = bpy.context.selected_objects[0]